python测试框架:pytest
- 支持参数化
- 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
- pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
- 测试用例的skip和xfail处理
- 可以很好的和jenkins集成
- report框架----allure 也支持了pytest
一 使用pytest执行测试需要遵循的规则:
.py测试文件必须以test_开头(或者以_test 结尾)
测试类必须以Test开头,并且不能有方法init;
测试方法以test_开头
断言必须使用assert;
二 fixture
pytest 中fixture实现unittest 中类似setUp /tearDown 功能,fixture可以只在执行某几个特定的case前运行;
yield :执行完之后需要清除数据
#!/usr/bin/env python
#coding=utf-8
import pytest
@pytest.fixture(scope='function')
def login():
print("登录")
yield
print("注销登录")
def test_1():
print('测试用例1')
def test_2(login):
print('测试用例2')
if __name__=="__main__" :
pytest.main(['test_sample.py','-s'])
pytest.main():
pytest.main(['test_sample.py','-s'])
可以指定参数和路径
(1)‘-s’:关闭捕捉,输出打印信息。
(2)‘-v’:用于增加测试用例的冗长。
(3)‘-k’ :运行包含某个字符串的测试用例。如:pytest -k add XX.py 表示运行XX.py中包含add的测试用例。
(4)‘q’:减少测试的运行冗长。
(5)‘-x’:出现一条测试用例失败就退出测试。在调试阶段非常有用,当测试用例失败时,应该先调试通过,而不是继续执行测试用例。