python - Pytest conftest.py 在重复测试执行期间被调用的次数越来越多
问题描述
这是我的conftest.py
:
class ValueStorage:
ime_rute = None
web_driver = None
@pytest.fixture(params=["chrome"], scope="class")
def init_driver(request):
start = datetime.now()
tester = os.environ["USERNAME"]
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
logger.addHandler(logging.FileHandler(filename=f'.\\Reports\\{date.today()}_duration.log'))
if request.param == "chrome":
options = ChromeOptions()
options.add_argument("--start-maximized")
options.add_argument("--no-sandbox")
if Options.HEADLESS == 1:
options.add_argument('--headless')
options.add_experimental_option("excludeSwitches", ["enable-logging"])
ValueStorage.web_driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
if request.param == "firefox":
ValueStorage.web_driver = webdriver.Firefox(GeckoDriverManager().install())
request.cls.driver = ValueStorage.web_driver
yield
end = datetime.now()
logger.info(
f"{end}: --- DURATION: {end - start} --- ROUTE NAME: {ValueStorage.ime_rute} --- HEADLESS: {Options.HEADLESS} --- RUN BY: {tester}")
ValueStorage.web_driver.close()
我正在使用命令行运行测试
pytest -k example -vv
(其中“example”是测试名称)。
我希望多次重复测试,所以我使用@pytest.mark.repeat(100)
装饰器:
@pytest.mark.repeat(100)
@pytest.mark.develop
def test_example(self):
# test code
duration.log 文件中的输出将类似于
2021-04-29 12:10:57.245345: --- DURATION: 0:00:24.612506 --- ROUTE NAME: 210429-3843-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:11:21.726882: --- DURATION: 0:00:24.364809 --- ROUTE NAME: 210429-3844-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:11:21.726882: --- DURATION: 0:00:24.364809 --- ROUTE NAME: 210429-3844-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:11:57.758704: --- DURATION: 0:00:35.897821 --- ROUTE NAME: 210429-3845-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:11:57.758704: --- DURATION: 0:00:35.897821 --- ROUTE NAME: 210429-3845-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:11:57.758704: --- DURATION: 0:00:35.897821 --- ROUTE NAME: 210429-3845-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:12:28.073752: --- DURATION: 0:00:30.255046 --- ROUTE NAME: 210429-3846-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:12:28.073752: --- DURATION: 0:00:30.255046 --- ROUTE NAME: 210429-3846-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:12:28.073752: --- DURATION: 0:00:30.255046 --- ROUTE NAME: 210429-3846-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
2021-04-29 12:12:28.073752: --- DURATION: 0:00:30.255046 --- ROUTE NAME: 210429-3846-RT-JDoe --- HEADLESS: 1 --- RUN BY: tester1
所以,正在发生的事情是,该logger.info()
行在第一次测试运行时写入一次,第二次写入两次,第三次写入三次,依此类推。
我尝试将 pytest 夹具的范围更改为“类”,但只有在测试运行 100 次后才记录该行。
我想logger.info()
在每次测试执行后写入日志。我需要做什么?
解决方案
推荐阅读
- python-3.x - Python Parallel SSH - 如何传递多个用户名和密码
- visual-studio-code - 如何获取所有打开文件的列表?
- node.js - 验证用户后呈现主页出现问题
- javascript - 引导组件在 Architect UI 模板中不起作用
- android - 如何为 Recyclerview 中未选择的其他项目设置操作
- azure - 有没有办法使用端口 80 或 443 连接到 Azure 虚拟机上的 Kafka?如果不是,为什么?
- dialogflow-es - 收到错误“错误:14 不可用:未建立连接”
- python - Conda Build Setuptools 下载被禁用错误
- c++ - CMAKE:错误的链接器 (g++) 用于 CUDA 库链接的可执行文件
- javascript - 如何让 JavaScript split() 方法通过新行正确拆分粘贴的文本?