知识点:一、用例打标签:pytest.mark
1.1、在pytest.ini文件中markers这个配置项中注册标签
image.png1.2、给用例加标签
#第一种方式
1、通过@pytest.mark.标签名,给单条用例加标签
#第二种方式
class TestClass(object):
pytestmark = pytest.mark.已注册标签名 # 只打1个标签
pytestmark = [pytest.mark.标签1, pytest.mark.标签2] # 多标签模式
#在 模块文件里,同理(py文件下,所有测试函数和测试类里的测试函数,都有该标签):
import pytest
pytestmark = pytest.mark.webtest
pytestmark = [pytest.mark.标签1, pytest.mark.标签2] # 多标签模式
1.3、通过标签筛选用例执行
1、pytest -m 标签名
2、pytest.main(['-m', '标签名'])
扩展:筛选多个标签(and or not):
pytest -m "not musen" : 执行不带有musen这个标签的用例
pytest -m "xiaojian or musen" : 执行带有musen或者xiaojian这个标签的用例
pytest -m "xiaojian and musen" : 执行同时带有musen和xiaojian这个两个标签的用例
1.4、内置的标签:
skip: 跳过用例
skipif: 通过条件来决定是否跳过用例
知识点:二、用例运行方式
2.1、运行方式
1、命令行: pytest 参数
2、pytest.mian运行,pytest.main(['参数列表'])
2.2、通过标签筛选用例
1、pytest -m 标签名
2、pytest.main(['-m', '标签名'])
# 执行即有login又有demo标签的用例: 逻辑与。
# 特别说明:-m login and demo是列表的1个成员。
pytest.main(["-s","-v",
"--alluredir=allure_result_files",
"--clean-alluredir",
"-m login and demo"])
# 执行有login 或者有demo标签的用例: 逻辑或
# 特别说明:-m login or demo是列表的1个成员
pytest.main(["-s","-v",
"--alluredir=allure_result_files",
"--clean-alluredir",
"-m login or demo"])
# 执行有login 但是没有demo标签的用例: 逻辑非
# 特别说明:-m login and not demo是列表的1个成员
pytest.main(["-s","-v",
"--alluredir=allure_result_files",
"--clean-alluredir",
"-m login and not demo",
"--reruns","2","--reruns-delay","5"])
2.3、筛选执行的用例
1、执行指定用例文件: pytest 文件名.py
2、执行指定测试类: pytest 文件名.py::类名
3、执行指定测试方法: pytest 文件名.py::类名::用例方法名
4、执行执行的测试目录 pytest 目录名
pytest.main(['testcase/test_demo3.py','-s'])
参数 -s: 阻止用例中输出的信息被吞
参数 -v: 显示用例执行的详细信息
pytest.main(["--alluredir=allure_result_files",
"--clean-alluredir"]) 清理曾经的allure路径下的文件,保证用例的准确性
知识点:三、断言
unittest中内置的很多断言的方法,pytest中没有
pytest中断言 直接使用 assert关键字
案例讲解:第一个demo--浅谈
pytest.ini
[pytest]
markers =
musen
main
xiaojian
test_demo1.py
import pytest
class TestLogin:
@pytest.mark.xiaojian
@pytest.mark.musen
def test_pass(self):
"""正向用例"""
assert 100 == 100
@pytest.mark.xiaojian
def test_01(self):
"""正向用例"""
assert 99 == 100
def test_02(self):
"""正向用例"""
assert 98 == 100
def test_03(self):
"""正向用例"""
assert 197 == 100
框起来的比较重要
run.py
pytest.main(['-m', 'musen'])
# pytest -m musen
一共四个用例,一个被打上musen标签,三个没有被打上musen标签,所以一个用例被选中,三个用例被丢弃
运行run.py,运行标签为musen的用例
案例讲解:skip使用
import pytest
class TestLogin:
@pytest.mark.xiaojian
@pytest.mark.musen
def test_pass(self):
"""正向用例"""
assert 100 == 100
@pytest.mark.xiaojian
def test_01(self):
"""正向用例"""
assert 99 == 100
def test_02(self):
"""正向用例"""
assert 98 == 100
def test_03(self):
"""正向用例"""
assert 197 == 100
class TestRegister:
@pytest.mark.musen
def test_pass(self):
"""正向用例"""
assert '注册成功' == '注册成功'
def test_01(self):
"""正向用例"""
assert '两次密码不一致' == '注册成功'
class TestDome:
a = 99
@pytest.mark.skip
def test_demo1(self):
assert 999 == 999
@pytest.mark.skipif(a == 99,reason='a不等于99才执行该用例')
def test_demo3(self):
assert 999 == 999
直接在文件所在目录下,打开控制台,输入pytest,可得到结果
结果部分截图1
结果部分截图2
网友评论