如何多次运行 pytest 方法?

问题描述 投票:0回答:3

我正在尝试使用 pytest-repeat 多次运行 pytest 方法,但我收到警告并且它只运行一次

from page.to_run_login import RegisterLogin
from utilites.testStatus import TestStatus
import unittest
import pytest



@pytest.mark.usefixture("oneTimeSetUp","setUp")
class RegisterTest(unittest.TestCase):

@pytest.fixture(autouse=True)
def classSetup(self,oneTimeSetUp):
    self.rg = RegisterLogin(self.driver)
    self.ts = TestStatus(self.driver)

@pytest.mark.run(order=1)
def test_registerLink(self):
    self.rg.register()
    self.rg.select_state_name()
    self.rg.select_city_name()
    self.rg.select_ready_wait()
    self.rg.select_ready_pay()
    self.rg.select_submit()

在终端中,我正在使用此命令执行 py.test -s -v test/to_test_login.py --count 2

python python-3.x unit-testing selenium-webdriver pytest
3个回答
4
投票

截至 2020 年 10 月 31 日,有更好的方法可以做到这一点。请参阅https://pypi.org/project/pytest-repeat/


只需

pip install pytest-repeat
并使用
--count
。示例:
pytest --count=10 test_file.py


2
投票

如果您将

pytest
与继承
unittest.TestCase
的测试一起使用,则有一种简单的方法可以通过使用 parameterized Python 库来重复它:

from unittest import TestCase
from parameterized import parameterized

class RepeatTests(TestCase):
    @parameterized.expand([[]] * 5)
    def test_repeat_this_test_with_parameterized(self):
        print("Hello!")
        self.assertTrue(True)

输出:

Hello!
Hello!
Hello!
Hello!
Hello!

-1
投票
 @pytest.mark.run(order=1)
 def test_registerLink(self):
    for i in range(100):
        self.rg.register()
        self.rg.select_state_name()
        self.rg.select_city_name()
        self.rg.select_ready_wait()
        self.rg.select_ready_pay()
        self.rg.select_submit()
        self.rg.driver.back()
        self.rg.driver.refresh()

我能够通过这样做解决它

© www.soinside.com 2019 - 2024. All rights reserved.