使用自定义的标签分类执行测试
我们可以使用标签将我们的测试用例进行分类,在测试的时候我们就可以根据标签运行我们想要运行的测试用例了。
小荔枝:我们在要被标记的用例上添加标签 @pytest.mark.标签名称(自定义) ,在运行的时候加上 -m 参数,后面加上要运行的标签名称。
#test_Pytest.py文件
#coding=utf-8
import pytest
class Test_Pytest():
@pytest.mark.test
def test_one(self):
print("test_one方法执行" )
assert 1==1
def test_two(self):
print("test_two方法执行" )
assert "o" in "love"
@pytest.mark.test
def test_three(self):
print("test_three方法执行" )
assert 3-2==1
if __name__=="__main__":
pytest.main(['-s','-m','test','test_Pytest.py'])
运行结果如下图所示:只运行了‘test’标签标记的用例。
如果实际过程中,我们的自定义标签比较多。我们可以用单独的一个模块存放自定义的标签,定义一个变量等于标签;然后在其他的模块中导入该变量,用该变量标记用例即可。
下面是一个小荔枝:
#conding=utf-8
#myMarks.py文件
import pytest
web=pytest.mark.web
android=pytest.mark.android
#test_Pytest.py文件
#coding=utf-8
import pytest
from testPytest.myMarks import web,android
class Test_Pytest():
@web
def test_one(self):
print("test_one方法执行" )
assert 1==1
@android
def test_two(self):
print("test_two方法执行" )
assert "o" in "love"
@web
def test_three(self):
print("test_three方法执行" )
assert 3-2==1
if __name__=="__main__":
pytest.main(['-s','-v','-m','web','test_Pytest.py'])
运行结果和你所想的一样,这里不再展示~
生成报告的三种方式
HTML格式的报告
我们先来学习最实用的方式:HTML格式的报告。为什么说是最实用的呢,还不是因为看起来方便直观。
第一步:要生成HTML格式的报告需要先安装扩展模块:pytest-html,使用pip命令即可。
pip install pytest-html
第二步:在运行函数或命令中加入参数:–html=报告名(也可以使用绝对路径)
荔枝:下面的代码和之前的代码相比,唯一不同的地方就是加入了–html参数。我们的报告是放在了同目录下的report.html文件。
#文件名是test_firstFile.py
#coding=utf-8
import pytest
class Test_Pytest():
def test_one(self):
pytest.skip(msg="就是不想执行")
print("test_one方法执行" )
assert 1==1
def test_two(self):
print("test_two方法执行" )
assert "o" in "love"
def test_three(self):
print("test_three方法执行" )
assert 3-2==1
if __name__=="__main__":
pytest.main(['-s','--html=report.html','test_firstFile.py'])
HTML报告展示图:相比于在控制台打印,是不是美观直观很多。
需要注意的是,目前为止我们生成的html报告的CSS样式是独立的。如果你把发送给他人,他收到的报告可能就缺少了CSS样式。我们可以通过添加参数: --self-contained-html 来解决这一问题。
if __name__=="__main__":
pytest.main(['-s','--html=report.html','--self-contained-html','test_firstFile.py'])
txt格式的报告
一句话:在运行函数或命令行中传入参数: --resultlog=报告名(也可以使用绝对路径)。
上荔枝:测试用例部分代码一样,便不再展示。
if __name__=="__main__":
pytest.main(['-s','--resultlog=log.txt','test_firstFile.py'])
文本报告如图:说实话和控制台展示的没多大区别,只不过是持久化了而已。
JunitXML格式的报告
还是一句话:在运行函数或命令行中传入参数: --junitxml=报告名(也可以使用绝对路径)。
最后一个荔枝:测试用例部分代码一样,便不再展示。
if __name__=="__main__":
pytest.main(['-s','--junitxml=testReport.xml','test_firstFile.py'])
JunitXML报告如下图: