pytest是python的一种单元测试框架,与python自带的unittest测试框架类似
三个基本要求
- 文件名必须以test_ 开头
- 测试类必须以Test开头,并且不能有 init 方法
- 测试方法必须以test开头
import pytest
# 单独的测试用例方法创建
def test_case1():
print("aaaa")
# 以类的形式创建单元测试用例,类名Test_开头
class Test_demo2():
# 测试用例方法以test_开头
def test_case02(self):
print("bbbbb")
def test_case03(self):
print("bbbbb")
assert 12==12
if __name__ == "__main__":
pytest.main()
断言
assert关键字后面可以接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败。
assert xx:判断xx为真
assert not xx:判断xx不为真
assert a in b:判断b包含a
assert a == b:判断a等于b
assert a !=b:判断a不等于b
执行
main()
if __name__ == "__main__":
# 默认加载配置文件中的参数
pytest.main(["-s"])
用例执行状态
- passed:测试通过,一般使用 . 来表示
- failed:断言失败,一般使用 F 来表示
- error:代码错误,一般使用 E 来表示
pytest常用的Fixture方法
- setup():每个测试方法执行之前会执行
- teardown():每个测试方法执行之后会执行
- setup_class():在每个类执行之前会执行
- teardown_class():在每个类执行后会执行
class TestFixture():
@staticmethod
def setup_class():
print("整个测试类开始前只执行一次setup_class")
@staticmethod
def teardown_class():
print("整个测试类结束后只执行一次teardown_class")
def setup():
print("类里面的每个用例执行前都会执行setup")
def teardown():
print("类里面的每个用例执行后都会执行teardown")
def test_login_success(self):
print("登录成功")
assert True
def test_login_error(self):
print("登录失败")
assert False
if __name__=="__main__":
pytest.main(["-s","-k Fixture"])