博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pytest系列(一):什么是单元测试界的高富帅?
阅读量:5022 次
发布时间:2019-06-12

本文共 2424 字,大约阅读时间需要 8 分钟。

pytest是python语言中一款强大的单元测试框架,用来管理和组织测试用例,可应用在单元测试、自动化测试工作中。

unittest也是python语言中一款单元测试框架,但是功能有限,没有pytest灵活。

就像:苹果电脑mac air 和mac pro一样。都是具备同样的功能,但是好用,和更好用。

本文包含以下几个内容点:

    1)pytest的简单示例

    2)pytest的安装

    3)pytest的特征、与unittest的区别。

    4)  pytest如何自动识别用例。

    5)pytest框架中,用例的运行顺序。

 

 

1)pytest写用例很简单,下面是一个简单的例子:

1 import random2 3 4 def test_demo():5     assert 7 == random.randint(0,10)

运行结果如下:

============================= test session starts =============================platform win32 -- Python 3.7.2, pytest-4.6.3, py-1.8.0, pluggy-0.12.0rootdir: D:\Pychram-Workspace\STUDY_PYTESTplugins: allure-pytest-2.6.5, html-1.21.1, metadata-1.8.0, rerunfailures-7.0collected 1 itemsimple.py Fsimple.py:10 (test_demo)7 != 6Expected :6Actual   :7========================== 1 failed in 0.14 seconds ===========================

 

2)pytest的安装

     安装命令:pip install pytest

 

 

3)pytest的特征、与unittest的区别。

    pytest的特征如下:

    3.1  自动识别测试用例。(unittest当中,需要引入TestSuite,主动加载测试用例。)

    3.2  简单的断言表达:assert 表达式即可。(unittest当中,self.assert*)

    3.3  有测试会话、测试模块、测试类、测试函数级别的fixture。(unittest当中是测试类、测试函数级别的fixture)

    3.4 有非常丰富的插件,目前在600+,比如allure插件。(unittest无)

    3.5 测试用例不需要封装在测试类当中。(unittest中需要自定义类并继承TestCase)

 

 

那么pytest是如何自动识别测试用例的呢?我们在编写pytest用例的时候,需要遵守哪些规则呢?

  4)  pytest如何自动识别用例

   识别规则如下:

    1、搜索根目录:默认从当前目录中搜集测试用例,即在哪个目录下运行pytest命令,则从哪个目录当中搜索;

    2、搜索规则:

        1)搜索文件:符合命名规则 test_*.py 或者 *_test.py 的文件

        2)在满足1)的文件中识别用例的规则:

              2.1)以test_开头的函数名;

              2.2)以Test开头的测试类(没有__init__函数)当中,以test_开头的函数

 

  示例:在D:\pycharm_workspace目录下,创建一个python工程,名为study_pytest。在工程下,创建一个python包,包名为TestCases。

            在包当中,创建一个测试用例文件:test_sample_1.py。文件内容如下:

1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 # Name: test_sample_1.py 4 # Author: 简 5 # Time: 2019/6/27 6  7 # 定义py文件下的测试用例 8 def test_sample(): 9     print("我是测试用例!")10 11 class TestSample:12 13     def test_ss(self):14         print("我也是测试用例!")15 16     def hello_pytest(self):17         print("hi,pytest,我不是用例哦!!")

 

按照上面定义的搜索规则,需要跳转到工程目录,然后再执行命令:pytest -v 。 执行结果如下:

 

 

让我们愉快的加进来第2个测试文件:test_sample_2.py,内容如下:

#!/usr/bin/python3# -*- coding: utf-8 -*-# Name: test_sample_2# Author: 简# Time: 2019/6/27def add(a,*args):    sum = a    for item in args:        sum += item    return sumdef test_add_two_number():    assert 33 == add(11,22)    assert 55.55 == add(22.22,33.33)def test_add_three_number():    assert 101 == add(10,90,1)

 

 再次运行命令:pytest -v   得到如下结果:

 

通过多个用例文件的执行,可以看出用例的执行顺序。

   5)  pytest中用例的执行顺序

   原则:先搜索到的py文件中的用例,先执行。在同一py文件当中,按照代码顺序,先搜索到的用例先执行。

 

转载于:https://www.cnblogs.com/Simple-Small/p/11077120.html

你可能感兴趣的文章
sql 去重排序及 java分页
查看>>
J2SE基础:10集合2
查看>>
C++中的虚析构函数、纯虚析构函数具体解释
查看>>
搞懂MySQL分区
查看>>
1. 设计模式学习
查看>>
letecode [136] - Single Number
查看>>
快速集成表单输入
查看>>
ios APP进程杀死之后和APP在后台接收到推送点击跳转到任意界面处理
查看>>
Java入门第二季——第4章 多态
查看>>
java设计模式--责任链模式
查看>>
springboot--读取配置文件
查看>>
linux下设置固定IP的方法
查看>>
编写函数calcF,实现输入一个值,计算其一元二次方程式的结果,f(x)=4*x*x+3*x+2 ,单击【计算】按钮,是用户通过提示对话框输入x的值,在对话框中显示相应的计算结果,如下图...
查看>>
jquery点击非div区域隐藏div
查看>>
vue-cli 配置路由之间跳转传递参数
查看>>
html5的classList属性介绍和原生js实现jQuery的addClass,removeClass,hasClass方法
查看>>
【juincen】mac上搭建php环境
查看>>
转:昨天去参加adobe AIR发布会
查看>>
08.存储Cinder→3.Cinder架构→1.架构概览
查看>>
Ant 学习笔记
查看>>