测试框架-Pytest框架(一)

目录

Pytest的安装与运行

安装

运行

运行方式及命令

IDE中运行

命令行终端运行

生成报告

报告中的乱码处理

检查点(断言)


基于python语言的自动化常用的框架有三种,unittest、pytest、RF。前两款更多的用于白盒单元测试,RF可以很好的做系统测试使用。

Pytest的安装与运行

安装

安装pytest:pip install pytest

安装pytest的报告插件:pip install pytest-html

运行

1、如果未指定命令行参数,则从testpath(如果已配置)或当前目录开始收集。如果命令行参数,指定了目录、文件名或node id的任何组合,则按参数来找寻找。

2、找寻过程会递归到目录中,除非它们匹配上norecursedirs。

3、在这些目录中,搜索由其测试包名称导入的 test_*.py 或 *_test.py 文件。再从这些文件中,收集如下测试项:test为前缀的 函数,Test为前缀的类里面的test为前缀的方法(注意大小写,class类的Test大写,def方法中test小写

代码示例 

class Test_rundemo:

    def test_001(self):
        print('行到水穷处,坐看云起时')

    def test_002(self):
        print('判断整数和字符是否相等')
        assert 1 == '1',"整数不等于字符"

运行方式及命令

创建一个如上的代码,运行上面的代码,运行的方式

IDE中运行

在pycharm终端窗口运行,使用pytest命令运行,运行机制会自动匹配当前项目文件目录中符合pytest要求的所有文件,执行 pytest时,如果命令行没有指定目标目录或者文件, 它会自动搜索当前目录下所有符合条件的文件、类、函数。运行结果如下:

这种运行结果很简单,如果测试通过,会在运行的结果处用绿色的点表示,如果不通过则会表示错误用红色的F表示,并在下方显示运行失败的用例的内容,如下图:

但是有的时候我们需要对通过的测试用例也要查看详细内容,如上面的代码中的打印内容以及想得到更详细的执行信息,包括每个测试类、测试函数的名字,这时在使用pytest命令的时候就需要添加参数

参数 -s   可以看到运行后的结果中多了打印的内容

参数 -v   显示运行的测试用例的类名和函数名

参数 **  这里的星号表示我们需要运行的具体的文件目录的名字,因为好多时候我们不需要运行所有的用例,只是相关套件中的用例

如现在运行cases目录中的所有用例文件,命令为pytest -sv cases

命令行终端运行

在pc命令行窗口运行,需要先切换到项目下,使用python运行先运行pytest,

python -m pytest -sv cases,运行结果如下:

生成报告

前面安装pytest的时候,同时安装了pytest-html,要在运行时候同时生产html报告只需要在pytest命令中增加参数:pytest -v cases --html=report.html --self-contained-html

--html=后面指明的是生成报告的文件名,如果指明具体的路径,生成的报告就在当前运行的代码文件目录下,如果要指明保存的位置,参数要详细到存储报告文件的路径及报告文件名,如下生成到桌面:pytest -v cases --html=C:\Users\JS-143\Desktop\pytest测试报告\report.html --self-contained-html(注意不要添加参数-s,否则测试报告中对于通过用例会不显示日志内容

报告中的乱码处理

如果测试套件或者用例命名中有中文会出现乱码问题,将上面代码中的class类和def方法的名称中添加汉字,运行后的报告中有乱码,如下:

解决方法:找到site-packages\pytest_html\plugin.py文件,修改其中的TestResult类,修改为下面的内容:

class TestResult:
    def __init__(self, outcome, report, logfile, config):
        # 源代码中的这行进行注释,防止以后要恢复
        # self.test_id = report.nodeid.encode("utf-8").decode("unicode_escape")
        # 将上面一行代码改为下面这行
        self.test_id = report.nodeid

检查点(断言)

pytest中用例的检查点直接用Python的assert断言。

assert后面的表达式结果为True,就是检查点通过,结果为False,就是检查点不通过。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值