今天分享内容的重点,和大家来讲一下我们的测试框架——Pytest

讲到这个框架的话呢,可能有伙伴就会问老师,我在学习自动化测试过程中,我们要去学一些什么东西?

第一个肯定要学会的是一门编程语言,比如说Python或者Java,至少你要会一个

第二个,你去进行WebUI自动化或者接口自动化,一些成熟的框架,比如说用来做Web自动化有Selenium,App自动化有Appium、uiautomator2,接口自动化框架就非常的多,requests、httprunner,这个只是说是框架,不是指工具,如果说你要指工具的话,还有很多,比如进行Web自动化的工具,QTP、Airtest、RF这一些都是工具,RF你其实也可以理解它为一个开源的框架。

编程语言:

  • python/java

成熟的框架:

  • web自动化: selenium RF
  • app自动化:appium uiautomator2 RF
  • 接口自动化:requests httprunner

除了这一些之外,我们要去搭建一套框架,我相信大家肯定还听过这两个东西,哎~老师,不是还有一个叫做Unittest以及我们这个Pytest,我们讲到Unittest以及Pytest到底和我们前面的框架有什么区别呢?

这就和大家来讲一讲。

一听到框架这个东西,两类都叫做框架,区别在哪?

Unittest以及Pytest我们把它们叫做单元测试框架,这一类框架运用场景有两个,场景一用来做单元测试(对代码最小的集合进行测试比如说小到测试函数的功能是否实现,类的功能是否实现),做单元测试其实要针对不同的语言有不同的框架,比如说在单元测试比较成熟这种框架Xunit系列框架,比如说去写的网站是用Java来设计的,我要去测试就要用到Junit这个框架,或者你也可以用testng框架,是针对Java比较成熟的两个框架。比如说去写的网站是用Python来设计的我们用的就是Unittest以及Pytest。

单元测试框架:

场景一:用来做单元测试 对代码最小的集合进行测试(函数、类)

  • xunit系列框架

  • java ==》junit / testng

  • python ==》unittest / pytest

上面是它的第一个场景,我们在讲自动化的时候,我们很少会去用场景一,单元测试这个事情本来它是由测试工程师来做的,但是它对测试工程师要求比较苛刻,需要精通熟练一门编程语言,才能够把单元测试做得很好。基本上单元测试不会有专门的测试工程师去做,公司中大部分都是由开发进行一个交叉的测试。

场景二:自动化的用例的管理
unittest / pytest + selenium / appium/requests

场景二用就可以结合我们的成熟的框架来做自动化测试,用例的管理,昨天的时候就有跟大家讲到POM的一个分层,为什么要用到分层思想来进行设计呢,其实目的就是因为我们在进行自动化测试的过程中间,也是对于我们自动化用例去进行一个覆盖以及实现,在过程中间会有很多重复性的东西,我们就给它抽出来。

我们讲POM的时候,我们其实就是结合了unittest来设计的用例,并且运行。

只是说咱们没有去生成Html报告,其实真正的你要去进行完整的过程,除了以这种模式来设计用例之外,还要去执行用例还要有报告的生成。(昨天有讲Unittest设计用例的基本规则,需要视频教程的可以公众号主页点击领取资料)

 
软件测试全栈工程师 程序员一凡.png

今天就给大家来讲一下,Pytest框架是如何来管理用例,和Unittest又有什么区别?它有什么样的优势?

Pytest框架概述

  • pytest是一个非常成熟的python的单元测试框架,比unittest更灵活,功能更强大。
  • pytest可以和selenium、appium、requests等结合实现web自动化、接口自动化、app自动化
  • pytest可以实现测试用例的跳过以及reruns失败用例重试
  • pytest可以和allure生成非常美观的测试报告
  • pytest可以和jenkins持续集成
  • pytest有很多非常强大的插件,并且这些插件能够实现很多实用的操作

Pytest插件

Pytest具有很多第三方插件,并且可以自定义扩展,常用的有:

  1. pytest
  2. pytest-xdist:测试用例分布式执行,多cpu分发
  3. pytest-ordering:用于改变测试用例的执行顺序
  4. pytest-rerunfailures:用例失败后重跑
  5. pytest-html:生成html格式的自动化测试报告
  6. allure-pytest:生成美观的allure测试报告

pytest识别用例默认规则

1.模块名(文件名)必须以test_开头或者以_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头

pytest配置文件

pytest.ini这个文件他是pytest单元测试框架的核心配置文件

1.位置: pytest.ini一般放在项目的根目录下
2.编码:必须是ANSI,可以使用Notepad++修改编码格式。有中文的时候一定要注意转码,否则会报错
3. 作用:改变pytest默认的执行方式
4.运行规则:主函数和命令行的执行方式,都会默认读取pytest.ini的配置文件

 
pytest配置文件

参数详解

-s:输出调试信息,包括print打印信息
-v:显示更详细的信息
-vs:两个参数一起用,输出详细的调试信息
-n:支持多线程或者分布式运行测试用例

  • pytest test_login.py -vs -n 2

--reruns NUM:失败用例重跑次数
--maxfail=2:出现2个用例失败就停止
--html=./report/res.html:指定在目录生成一个测试报告
pytest test_login.py --html=./report/res.html

Allure环境部署

下载、安装、配置Allure

下载地址: https://github.com/allure-framework/allure2/releases

安装:解压即可
配置:环境变量--path--allure安装目录/bin

验证:

  • dos命令行: allure --version
  • pycharm terminal:allure --version
  • 问题:dos验证Ok,pycharm验证失败怎么解决?重启pycharm

Allure报告指令

1.添加配置,生成json格式的临时报告

  • 主函数: pytest.main(['--alluredir ,'./temp'])
  • 配置文件: addopts = --alluredir./temp

2.将json格式的临时报告转换为allure报告
pytest.main(['--alluredir' ;'./temp'])
os.system('allure generate ./temp -o ./report --clean')

冒烟测试

pytest.ini中添加markers = smoke:冒烟测试
在函数上加上mark标记来指定进行冒烟测试的用例:@pytest.mark.smoke
命令行执行:pytest -m smoke
主函数执行: pytest.ini添加-m smoke,再执行主函数即可

 
冒烟测试

1、点赞。防止以后找不到,想看的时候,在自己主页就能找到了,很方便;
2、关注我。让我们成为长期关系,下一个视频会分享更多的硬核干货;
3、本文章学习资源,均可以免费分享。

微信公众号:程序员一凡。这样的好内容,里面还有近百篇。 谢谢你的支持!

你看到优质的文章点赞,表面上是为了让作者开心,实际上可以让大数据和人工智能给你推荐更多优质的干货内容~

Pytest自动化测试-简易入门教程(03)的更多相关文章

  1. Pytest自动化测试-简易入门教程(02)

    Pytest框架简介 Pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:1.简单灵活,容易上手,支持参数化2.能够支持简单的单元测试和复杂的功能测试,3.还可以用来做sel ...

  2. Pytest自动化测试-简易入门教程(01)

    我们今天主讲的内容,就是测试框架Pytest,讲到这个测试框架对于没有做过Web自动化的伙伴来说,会觉得这个东西是陌生的,那么到底什么是框架呢?什么又是自动化呢?自动化为什么又要用框架呢? 难道我学自 ...

  3. Web压力测试工具 LoadRunner12.x简易入门教程--(一)回放与录制

        LoadRunner12.x简易入门教程--(一)回放与录制 今天在这里分享一下LoadRunner12.x版本的入门使用方法,希望对刚接触LoadRunner的童鞋有所帮助. LoadRun ...

  4. Pytest自动化测试 - 简易教程

    简介 pytest是动态编程语言Python专用的测试框架,它具有易于上手.功能强大.可扩展性好.兼容性强.效率高.第三方插件丰富等特点. 功能特征: 完整的文档,包括安装,教程和PDF文档 简单而又 ...

  5. 大爽Python入门教程 0-3 安装Atom与配置Python环境

    大爽Python入门公开课教案 点击查看教程总目录 安装轻量级IDE--Atom 一 下载 下面步骤1,2中网络卡顿的朋友, 请直接查看步骤3来操作 1. 搜索官网 使用搜索引擎搜索Atom, 打开搜 ...

  6. Lua简易入门教程

    环境:lua for windows (lfW)主页:http://luaforwindows.luaforge.net/https://code.google.com/p/luaforwindows ...

  7. Webpack简易入门教程

    <!-- 其实网上关于webpack的教程已经很多了,但是本人在学习过程中发现很多教程有错误,或者写的很不全面,结果做的过程出现各种各样的问题,对新手不但不友好还会让人浪费很多不必要的时间.所以 ...

  8. Angular系列---- AngularJS入门教程03:AngularJS 模板(转载)

    是时候给这些网页来点动态特性了——用AngularJS!我们这里为后面要加入的控制器添加了一个测试. 一个应用的代码架构有很多种.对于AngularJS应用,我们鼓励使用模型-视图-控制器(MVC)模 ...

  9. 给萌新的Flexbox简易入门教程

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://www.sitepoint.com/flexbox-css-flexible-bo ...

随机推荐

  1. POJ_1273 Drainage Ditches 【网络流】

    一.题面 Drainage Ditches 二.分析 网络流的裸题. 1 Edmonds-Karp算法 求解网络流其实就是一个不断找增广路,然后每次找到一条增广路后更新残余网络的一个过程. EK算法主 ...

  2. python plt画图横纵坐标0点重合

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.mlab as mlab import matplotlib.pyplot a ...

  3. 练习使用Unicorn、Capstone

    Unicorn是一个轻量级的多平台,多体系结构的CPU仿真器框架.官网:http://www.unicorn-engine.org/ Capstone是一个轻量级的多平台,多体系结构的反汇编框架.官网 ...

  4. 高仿京东到家APP引导页炫酷动画效果

    前言 京东到家APP的引导页做的可圈可点,插画+动效,简明生动地说明了APP最吸引用户的几个亮点(商品多,价格低,配送快...).本文主要分析拆解这些动画效果,并完成一个高仿Demo,完整的Demo代 ...

  5. kong更改日志格式

    基于业务的需求,需要对网关层的日志进行适当定制,以满足使用kibana的制图. 对于kong的日志格式更改,可查看到的资料都过于繁琐,特此记录. 修改kong的日志格式 # ctl edit depl ...

  6. 第18 章 : Kubernetes 调度和资源管理

    Kubernetes 调度和资源管理 这节课主要讲三部分的内容: Kubernetes 的调度过程: Kubernetes 的基础调度能力(资源调度.关系调度): Kubernetes 高级调度能力( ...

  7. Class类文件结构--访问标志

    访问标志的位置:在常量池结束之后的两个字节(16位)表示访问标志access_flags. 访问标志的作用:用于标识类或者接口层次的访问信息:比如该Class是类还是接口,是否为public类型.是否 ...

  8. 简单的了解下Java设计模式:迭代器模式(转载)

    迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. Java 开发过程中遍历是常用的.如下边程序: for(int i =0 ; ...

  9. 前端DDD总结与思考

    软件开发架构演化与DDD起源 单体服务架构:大概10年前,我在武汉工作的时候,甲方客户购买我们的产品,一般都是连着设备一起购买,一套软件系统,一台惠普或者戴尔的企业级服务器,再加一个黑色的铁盒,销售部 ...

  10. Magicodes.IE.ASPNETCore之多样化接口使用

    1.安装包 Install-Package Magicodes.IE.AspNetCore 2.开始配置 在Startup.cs的Configure()方法中,在UseRouting()中间件之后,注 ...