运行方式
- python 模块名.py 添加pytest_main()
- python -m python
pytest会进行自动查找默认查找
- 文件 test_*.py 和 *_test.py 开头或者结尾
- 模块需要以test开头
自定义查找规则 在运行的根目录下,创建pytest.ini文件
代码语言:javascript复制[pytest]
python_files =
test_*.py
check_*.py
example_*.py
python_functions = *_test
python_classes = *Suite
以上配置文件表示,pytest查找模块名为test_,check_,example_开头的模块,函数名为_test结尾的文件,Suite结尾的类
参数
1.指定名称或目录进行测试
- 指定测试模块: pytest 模块名.py
- 指定测试目录:pytest 测试用例路径/
2.通过节点id进行测试
节点id的组成:
- py模块名::类名::方法名
- py模块名::函数名
例:
代码语言:javascript复制pytest test_add.py::TestDemo::test_add_1
3.-k关键字匹配
代码语言:javascript复制pytest -k "test_add and not test_add_1"
运行test_add 不运行 test_add_1
4.-m标记用例 使用mark标记测试用例
标记测试用例步骤
- pytest.ini文件注册标签
- 标签贴到指定的测试用例或者类 @pytest.mark.标签名称
- pytest -m “标签名称”(加上双引号)
标记测试用例方法 1.类标记 方法一:使用 @pytest.mark.名称 进行标记
代码语言:javascript复制 @pytest.mark.error
class TestLogin(unittest.TestCase):
def test_login_1(self):
self.assertEqual(1,1)
def test_login_2(self):
self.assertEqual(1,2)
方法二:使用类属性 pytestmark = [pytest.mark.名称,pytest.mark.名称]
代码语言:javascript复制class TestLogin(unittest.TestCase):
pytestmark = [pytest.mark.login,pytest.mark.error]
def test_login_1(self):
self.assertEqual(1,1)
def test_login_2(self):
self.assertEqual(1,2)
2.方法标记 使用标签 @pytest.mark.名称
代码语言:javascript复制class TestDemo(unittest.TestCase):
@pytest.mark.success
def test_add_1(self):
self.assertEqual(1,1)
@pytest.mark.login
def test_add_2(self):
self.assertEqual(1,2)
3.跳过标记 @pytest.mark.skip(“跳过理由”) @pytest.mark.skipif(“条件”) 例如:满足系统是windows时跳过
代码语言:javascript复制@pytest.mark.skipif(sys.platform=="win32")
执行顺序
pytest的执行顺序安装方法写的前后顺序决定 unnittest的执行顺序由函数名的ASCII码决定