Pytest不会在类中获取测试方法

时间:2015-08-12 17:07:24

标签: python python-3.x pytest

始终使用python unittest2,刚刚开始迁移到pytest。当然,我试图绘制相似之处,而我无法弄清楚的一件事是:

问题为什么Pytest不会选择我在" test"中定义的测试方法?类。

什么对我有用

# login_test.py
import pytest
from frontend.app.login.login import LoginPage

@pytest.fixture
def setup():
    login = LoginPage()
    return login

def test_successful_login(setup):
    login = setup
    login.login("incorrect username","incorrect password")
    assert login.error_msg_label().text == 'Invalid Credentials'

什么对我不起作用(不起作用=测试方法没有被发现)

# login_test.py 
import pytest
from frontend.app.login.login import LoginPage


class LoginTestSuite(object):

    @pytest.fixture
    def setup():
        login = LoginPage()
        return login

    def test_invalid_login(self, setup):
        login = setup
        login.login("incorrect username","incorrect password")
        assert login.error_msg_label().text == 'Invalid Credentials'

pytest.ini我有

# pytest.ini
[pytest]
python_files = *_test.py
python_classes = *TestSuite
# Also tried
# python_classes = *
# That does not work either

不确定调试此内容需要哪些其他信息?

感谢任何建议。

2 个答案:

答案 0 :(得分:5)

我刚遇到类似的问题。我发现,如果你以“Test”开头命名你的类,那么pytest会把它们拿起来,否则你的测试类就不会被发现了。

这有效:

class TestClass:
    def test_one(self):
        assert 0

这不是:

class ClassTest:
    def test_one(self):
        assert 0

答案 1 :(得分:-1)

该类是否必须继承unittest.TestCase?

使用py.test,为什么要重新引入类样板? py.test的原则之一是尽量减少样板!

以下是文档中的默认约定:

http://pytest.org/latest/goodpractises.html#python-test-discovery