一.安装方式

1.安装命令:pip install pytest

2.html安装插件:pip install pytest -html


二.pytest执行指定测试用例

1.思想:通过对测试用例进行做标记,在执行测试用例的时候执行做标记的测试用例。

2.使用方法

  在指定执行的测试用例上面做标记:@pytest.mark.标记名

  例如: 

@pytest.mark.smoke
def test_loginpage(self):
      logging.info("*********登陆用例:正常场景:使用正确的用户名和密码登陆*********")
        xxxxxxxxxxxx相关代码xxxxxxxxxxxx

三.pytest收集测试用例

1.默认收集规则:默认在当前目录收集测试用例,即在哪个目录下运行pytest,就在哪个目录中搜索

2.搜索规则:

  (1)以test_*.py或者*_test.py命名的文件

  (2)以test_*开头的函数名

  (3)以Test开头的测试类(类中没有def __init__(self)函数)中以test_*命名的函数。

  注意:*代表任意字符


四.pytest参数化

1.使用方式:

在需要参数化的测试用例上面加上:@pytest.mark.parametrize("参数名",列表数据)

参数名:用来接收每一项数据,并且作为测试用例的参数

此处的参数名用法类似于unittest里面所使用的@ddt.data的装饰的函数的作为测试用例的参数。

列表数据:一组测试数据。


五.pytest运行测试用例

常用方式:通过做标记执行用例pytest -m 标记名

1.指定测试模块:pytest test_mod.py

2.指定测试目录:pytest testing/(此处是相对路径)

3.通过关键字过滤:pytest -k "myclass and not method"

4.通过节点过滤:py模块名::类名::函数名   或     py模块名::函数名


六.pytest的fixture功能

1.思想:fixture的思想是测试用例的环境的准备和清理工作。类似于unittest里面的Setup和tearDown函数功能类似,unittest中的Setup是将执行测试用例前的准备放到此函数内,执行玩测试用例后的操作放在tearDown函数中。

2.用途:做web自动化测试的时候都需要登录网站和退出每一个测试用例都需要则可以利用fixture可以制作一次。

3.使用方法:

(1)在框架中新建一个conftest.py文件,在该文件中定义fixture.这样在运行测试用例的时候不需要去导入文件,就会自动查找conftest.py文件中对应的fixture

(2)定义fixture:

  在函数声明前加上@pytest.fixture。表示次函数为测试环境的准备和清理工作

  通过yield来标识为环境清理的工作。yield后面的代码为环境清理的工作。

  fixture装饰的函数可以有返回值:yield   返回值

(3)可以通过scope参数设置fixture的不同作用域。

scope='function':默认是函数级别的,每个test都运行。

scope='class':作用域是类(class)每个class中的test函数都运行

scope='module':作用域是模块,模块内的test都运行且运行一次

scope='session':每个session运行一次

  例如: 

@pytest.fixture(scope='class')#注意fixture默认的作用域是函数级别的此处定义的是类级别的
def start(self):
    logging.info("**********登陆用例:正常场景:使用正确的用户名和密码登陆*********")
    driver = webdriver.Chrome()#打开浏览器会话yield  返回值
    logging.info("*********执行测试结束,关闭相应驱动*********")
    driver.quit()#关闭浏览器会话,并且关闭线程
   driver.close()#关闭浏览器会话

4.在测试类/测试用例函数中使用fixture.

  通过使用fixture装饰器装饰:@pytest.mark.usefixtures("用fixture装饰的函数名")用以上例子调用fixture装饰的函数则是:@pytest.mark.usefixtures("strat")

5.测试用例的函数需要fixture装饰的函数的返回值

如果fixture有返回值,在测试用例中用fixture函数名接收返回值

例如:

def aa(self,start):
    star.find_element_by_id("zz")

七.用例重试机制

web自动化环境不稳定,考虑用例重试机制。若是环境问题导致用例执行失败,重新运行后可能会成功。

pytest单元测试框架的更多相关文章

  1. Pytest单元测试框架-测试用例运行规则

    1.Pytest测试用例运行规则 在pytest单元测试框架下面执行用例,需要满足以下几个特点: 1. 文件名以test_*.py开头或者*_test.py 2. 测试类.测试函数以test开头 3. ...

  2. Pytest单元测试框架-Pytest环境安装

    unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发 ...

  3. Pytest单元测试框架:插件-allure-pytest环境搭建并在本地生成一个测试报告

    之前写了allure-pytest的官方文档啃的内容,有些交流的朋友,实践起来没什么头绪,所以就有了这篇文章,也给自己填个坑 第一步:搭建Allure.JDK环境 1. 搭建JDK环境 不装jdk你会 ...

  4. Pytest单元测试框架之简单操作示例

    前言: Pytest是第三方单元格测试框架,更加简单,灵活,而且提供了更多丰富的扩展: Pytest与UnitTest框架的区别 UnitTest测试用例执行顺序是依照ascii码执行,而Pytest ...

  5. Pytest 单元测试框架

    1.pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效 2.安装 pytest pip install pytest 3.验证 pytest 是否安装成功 p ...

  6. Pytest单元测试框架——Pytest+Allure+Jenkins的应用

    一.简介 pytest+allure+jenkins进行接口测试.生成测试报告.结合jenkins进行集成. pytest是python的一种单元测试框架,与python自带的unittest测试框架 ...

  7. Pytest单元测试框架-学习

    pytest: Python的一个单元测试框架,基于UnitTest二次开发,语法上更加简洁,可以用来做Python开发项目的单元测试,UI自动化.接口自动化测试等,有很多的插件访问Pytest插件汇 ...

  8. Pytest单元测试框架之FixTure基本使用

    前言: 在单元测试框架中,主要分为:测试固件,测试用例,测试套件,测试执行及测试报告: 测试固件不难理解,也就是我们在执行测试用例前需要做的动作和测试执行后的需要做的事情: 比如在UI自动化测试中,我 ...

  9. Pytest单元测试框架-allure测试报告

    Allure Test Report 对于不同的编程语言,有很多很酷的测试框架.不幸的是,它们中只有少数能够提供测试执行输出的良好表示.Qameta软件测试团队正在致力于Allure--一个开源框架, ...

随机推荐

  1. QT创建与调用Dll方法(包括类成员)--显式调用

    看网上的好多关于QT调用Dll的方法,大部分都是调用函数的,并没有调用C++类成员的情况,即使是有,比如说: 使用Qt编写模块化插件式应用程序 Qt 一步一步实现dll调用(附源码)---(这一篇里没 ...

  2. MYSQL 之SET GLOBAL innodb_buffer_pool_size =n

    工作遇到一个情况是索引相同的情况下,mysql服务在linux上运行很快,在windows服务器上运行很慢,版本是V5.7以后得版本,同事查找了下说应该设置 SET GLOBAL innodb_buf ...

  3. nutzwk运行后wk-web中生成ehcache.disk.store.dir有什么用,怎么去掉

    nutzwk运行后wk-web中生成ehcache.disk.store.dir有什么用,怎么去掉  发布于 29天前  作者 qq_96c46988  64 次浏览  复制  上一个帖子  下一个帖 ...

  4. 20145238-荆玉茗 《Java程序设计》实验三

    20145238-荆玉茗-实验三 实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营 ...

  5. service 入门

    https://www.cnblogs.com/keguangqiang/p/3663086.html#undefined

  6. 配置伪静态(URL重写)

    本篇借鉴了很多文章,这里做个记录. 有时我们的导航栏出现xx.aspx?id=x&name=xx 等等这样,会显得不好看,我们可以利用伪静态来美化我们的导航栏,伪静态的形式可以自己定义,本质还 ...

  7. LOJ#515. 「LibreOJ β Round #2」贪心只能过样例(bitset)

    内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: nzhtl1477 提交提交记录统计讨论测试数据   题目描述 一共有 nnn个数,第 iii ...

  8. 懒下载软件,一行代码连接wifi^_^

    按键盘的windows+R,输入cmd,回车键 设置语句netsh wlan set hostednetwork mode=allow ssid=user key=possword 按回车键 启动语句 ...

  9. Yii2实现跨mysql数据库关联查询排序功能

    遇到一个项目,需要跨表网上找了很多的资料,整理一下,方便以后再次使用 背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库: memory (存储常规数据表) ...

  10. C++ Primer 学习笔记_Chapter4 数组和指针–指针

    一.什么是指针? 指针与迭代器一样,指针提供对其所指对象的间接访问,指针保存的是另一个对象的地址: string s("hello"); string *ps = &s; ...