• 0
  • 0
分享

一、单元测试框架

1.什么是单元测试框架

单元测试框架是在自动化测试或者白盒测试中对软件的最小单元(函数,方法)进行测试的框架。

2.单元测试框架分类

python:unittest、pytest

3.单元测试框架主要做什么?

发现测试用例

执行测试用例

判断测试结果

生成测试报告

二、pytest简介以及常用插件安装

1、pytest是一个非常成熟的单元测试框架,灵活和简单。

2、它可以结合selenium、request、appium完成各种不同的自动化。

3、它还可以生成自定义allure报告以及Jenkins持续集成。

4、pytest还有很多强大的插件:

pytest

pytest-html(生成html报告的插件)

pytest-xdist(多线程运行的插件)

pytest-ordering(改变用例的执行顺序的插件)

pytest-rerunfailures(失败用例重新执行的插件)

allure-pytest(生成美观的自定义的allure报告)

通过在项目的根目录下新建一个:requirements.txt文件保持插件。然后通过以下命令安装:

pip install -r requirements.txt

三、pytest默认测试用例的规则以及基础应用

1、模块名必须以test_或者_test结尾。

2、测试类必须以Test开头,并且不能带有init方法。

3、测试用例必须以test_开头。

执行:Alt+enter自动导包

1.通过命令方式执行

pytest

执行的参数:

-vs        -v输出详细信息。 -s输出调试信息。如 :pytest -vs

-n          多线程运行。(提前安装插件:pytest-xdist)如:pytest -vs -n=2

-reruns num   失败重跑 (提前安装插件:pytest-rerunfailres)如:pytest -vs -reruns=2

                        raise Exception()抛出异常

                        try except                解决异常

-x                出现一个用例失败则停止测试。如:pytest -vs -x

--maxfail        出现几个用例失败才停止,如:pytest -vs --maxfail=2

--html        生成html的测试报告(提前安装插件:pytest-html)如:pytest -vs --html/.reports/result.html

-k                运行测试用例名称中包含某个字符串的测试用例。如:pytest -vs -k "demo1"

-m "smoke"        只执行冒烟用例                如:pytest -vs -m "smoke"               

2.通过主函数main方式执行。

if __name__ == '__main__':
    pytest.main(["-vs"])

3.通过全局配置文件pytest.ini文件执行。

注意:

一般放在项目的根目录下,名称必须是pytest.ini

编码格式为ANSI,当有中文时可能需要改变编码格式为GB2312

pytest.ini文件可以改变默认的测试用例规则

不管是命令行运行还是主函数运行,都会加载这个配置文件

[pytest]
# 参数
# 具体传参
addopts = -vs   
# 执行的测试用例的路径
testpaths = ./testcase
# 执行的模块
python_files = test_*.py
# 执行的类
python_classes = Test*
# 执行的函数
python_functions = test_*
# 测试用例分组执行进行标记
markers =
    smoke : 冒烟用例
    authority_manage : 权限管理
    menu_manage : 菜单管理

四、pytest跳过测试用例

(1)无条件跳过

@pytest.mark.skip(reason="无理由跳过")

(2)有条件跳过

@pytest.mark.skipif(time_age<10, reason="年龄小于10跳过")

五、pytest测试用例的前后置,固件

class CommonUtil:
 
    def setup_class(self):
        print("每个类之前执行一次")
 
    def teardown_class(self):
        print("每个类之后执行一次")
 
    def setup(self):
        print("每个用例之前执行一次")
 
    def teardown(self):
        print("每个用例之后执行一次")

用例demo:

import pytest
import time
 
from common.common_util import CommonUtil
 
class TestCeshi(CommonUtil):
    time_age = 8
 
    @pytest.mark.smoke
    def test_demo1(self):
        print("测试第一条用例")
        raise Exception("这条用例挂了")
 
    def test_demo2(self):
        print("测试第二条用例")
 
    @pytest.mark.skip(reason="无理由跳过")
    def test_demo3(self):
        print("测试第三条用例")
 
    @pytest.mark.skipif(time_age < 10, reason="年龄小于10跳过")
    def test_demo4(self):
        print("测试第四条用例")
        
    def test_demo5(self):
        print("测试第五条用例")


作者:Jerry Lee~

原文链接:https://blog.csdn.net/weixin_44993143/article/details/124599698

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   说到Jmeter,大家都知道是做接口测试和性能测试的一个工具。很多人脑中会浮现参数化、集合点、检查点等名词,前两篇已经介绍了Jmeter的入门操作,那今天我们就来看如何修改我们的脚本来实现参数化。  举例是我一贯的风格,之前举例截图中,Jmeter都是中文版的操作界面,但是小白根据我的文章进行搭建环境后,发现是英文版的。其实Jmeter自带语言转换功能。操作如下:  点击”Options”->”Choose Language”->”Chinese(Simplified)”  还有一种方法,在Jmeter的bin目录下,找到jmeter.properties文件,右键编辑如下图:...
            4 3 2729
            分享
          •   MySQL数据库作为目前流行的数据库大量应用于PHP、JAVA、Python等Web语言开发项目中,大多数情况下,数据库的操作性能成为整个应用的性能瓶颈。数据库的性能是程序员需要去关注的事情,当设计数据库表结构以及操作数据库(尤其是查询数据时),都需要注意数据操作的性能。  一、优化目标  1、减少 IO 次数  IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段。  2、降低 CPU 计算  除了 IO 瓶颈之外,S...
            15 15 1424
            分享
          •   美国国家公路交通安全管理局 (NHTSA) 关闭了针对特斯拉车辆的又一项调查,上周该机构刚刚结束了对特斯拉 Autopilot 系统的调查。  本周,NHTSA 宣布关闭一项始于 2020 年 11 月的调查,该调查旨在查明导致汽车倒车时后视摄像头图像显示丢失的触屏故障原因。  该机构于 5 月 2 日正式关闭调查,此前调查范围涵盖了 158,716 辆特斯拉汽车。NHTSA 在 2020 年的文件中描述了最初的问题:“触屏故障会导致倒车时后视摄像头图像显示丢失,从而降低倒车时的后方视野。触屏故障还会影响空调系统 (除雾) 功能以及与 ADAS、Autopilot 系统和转向灯相关的警示音...
            0 0 505
            分享
          • 在我们日常测试app或者小程序的时候,经常要遇到抓包的情况,我们常用的抓包工具是fiddler或者charles,这两个工具抓http类型的包还好,但是抓https类型的日志是需要root手机的,现在的真机不是开发者是不好root的,那么这个时候模拟器就可以上场啦。做模拟器的有很多品牌,我最习惯也最常用的是夜神模拟器(雷电模拟器不太好用)首先,模拟器可以设置手机。型号,可以设置性能,屏幕尺寸等基本参数,方便页面展示,这个对于ui方面的测试有一定的帮助,可以看下页面有没有明显的拉伸或者重叠等。也可以在模拟器上面跑关于app的页面自动化这些,也是非常方便调试的,跑不通或者有报错的地方可以直接修改。...
            1 1 11035
            分享
          •   有一些初始的小测试团队,对BUG单可能会进行重要程度的划分,但并不会进行类型划分,其实,如果不对BUG进行错误类型定义,项目经理或测试经理并不好确认后续质量提升在哪方面进行改进,具体研发的哪个环节更需要进行改进。故此合理的对BUG单进行分类也是提交BUG的前提。以下是我整理的BUG类型分类情况:  进行BUG类型分类仅是第一步,作为WEB类的项目,一般情况下,明面上的二、三类问题,自测时容易发现且会完成修改,留到测试去提出的机率相对会少一点;而其它类问题常常因为开发时间不够或不重视等原因,大量的留给了测试阶段去提出;对于这类现象,负责的项目经理有时候是心有余而力不足;而不太负责的项目经理,...
            15 15 2282
            分享
      • 51testing软件测试圈微信