Python 2.7 pytest运行了两次方法

Python 2.7 pytest运行了两次方法,python-2.7,pytest,fixtures,Python 2.7,Pytest,Fixtures,我在两个不同的模块上运行测试方法时遇到问题。 我在另一个模块中创建了suite函数,并将其定义为一个fixture 在这两个测试类中,我输入了创建的fixture,将其作为设置函数使用一次 对于每个测试方法,我都创建了setup和teardown方法。 当第一个模块的测试方法运行时,另一个类(第二个模块)的测试在第一个类中开始,然后在第二个类中再次运行。因此,第二个类中的测试方法运行两次,一次从第一个模块中的第一个类运行,然后从第二个模块中的第二个类运行 我希望每个类或模块运行一次测试方法,而不

我在两个不同的模块上运行测试方法时遇到问题。 我在另一个模块中创建了suite函数,并将其定义为一个fixture

在这两个测试类中,我输入了创建的fixture,将其作为设置函数使用一次

对于每个测试方法,我都创建了setup和teardown方法。 当第一个模块的测试方法运行时,另一个类(第二个模块)的测试在第一个类中开始,然后在第二个类中再次运行。因此,第二个类中的测试方法运行两次,一次从第一个模块中的第一个类运行,然后从第二个模块中的第二个类运行

我希望每个类或模块运行一次测试方法,而不是运行两次

有人能帮我找到解决办法吗

PS:我在套件夹具中使用参数scope='session'(与模块相同)

示例(conftest.py):

示例(test.py):


您可以将参数传递给setup和teardown函数,并根据类或方法名或模块名设置条件,并相应地执行操作

例如:--

def设置方法(值):
如果值.\uuuuu名称\uuuuu=='':
通过
elif值。\uuuu名称\uuuu=='':
通过

您可以将参数传递给设置和拆卸函数,根据类或方法名称或模块名称设置条件,并相应地执行操作

例如:--

def设置方法(值):
如果值.\uuuuu名称\uuuuu=='':
通过
elif值。\uuuu名称\uuuu=='':
通过

谢谢@nikhilesh_koshti。但是,如果我有不同的测试方法和不同的安装和拆卸方法,如何运行它们?请提供示例?如果您需要一些代码示例,那会更好。我添加了一个代码示例。在那里你可以看到我有不同的测试方法,我希望每个测试方法都有一个不同的设置和拆卸方法(不是所有测试都有一个设置和拆卸方法)。我不能从我这边重现你的问题,因为我认为,设置方法或类特定于定义它的测试类,它不会影响模块中的其他测试类方法。setup_class()和setup_method()在pytest的testclass中只使用一次。谢谢@nikhilesh_koshti。但是,如果我有不同的测试方法和不同的安装和拆卸方法,如何运行它们?请提供示例?如果您需要一些代码示例,那会更好。我添加了一个代码示例。在那里你可以看到我有不同的测试方法,我希望每个测试方法都有一个不同的设置和拆卸方法(不是所有测试都有一个设置和拆卸方法)。我不能从我这边重现你的问题,因为我认为,设置方法或类特定于定义它的测试类,它不会影响模块中的其他测试类方法。setup_class()和setup_method()在pytest的testclass中只使用一次。
@pytest.fixture(scope="session")
def suite():
    print "start application"
    open_app()
    def setup_method(self, method):
        if method.__name__ == 'test_1':
            pass
        elif method.__name__ == 'test_2':
            pass
        else:
            print "test method not found"

    def teardown_method(self, method):
        print "teardown methods"



    def test_1(self):
        pass

    def test_2(self):
        pass

    def test_3(self):
        pass

    def setup_test_3(self, testcase):
        print "this is only for the test methd: test_3"

    def teardown_test_3(self):
        print "cleanup state after running test method test_3"
def setup_method(value):
    if value.__name__ == '<name of method from the module1>':
        pass
    elif value.__name__ == '<name of method from the module2>':
        pass