python编写命令行框架_python的pytest框架之命令行参数详解(上)

前言

pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作。pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixture模型。pytest是一个软件测试框架,是一款命令行工具,可以自动找到测试用例执行,并且回报测试结果。有丰富的基础库,可以大幅度提高用户编写测试用例的效率。具备扩展性,用户可以自己编写插件,或者安装第三方提供的插件。可以很容易地与其他工具集成到一起使用。比如持续集成,web自动化测试等。

下面列举了一些pytest相对于其他框架的优点

1. 简单的测试可以很简单的编写

2. 复杂的测试也可以简单的编写

3. 测试的可读性

4.易于上手

5. 断言仅使用原生的assert关键字,而不是像unittest那样使用self.assert**那样

6. pytest可以运行unittest和nose编写的测试用例

上面大部分结论其实也不是我个人总结的,是我从一本书上看到的,因为我也是刚刚接触这个框架,了解的也并不多。还有一个重要原因就是写文章不写点所谓的科学理论好像缺少点啥……(别管了前面了*总之一句话:pytest就是一个测试框架和unittest一类,功能很强,支持好多插件,用例写起来简单,代码逻辑性强,值得学习!实际工作中能不能用,能不能用好那就要靠自己了!)^_^废话不多说!

编写第一个测试函数(用例)

from selenium import webdriver

def testOpenUrl():

try:

driver = webdriver.Firefox() # 打开浏览器

driver.get('http://www.baidu.com') # 访问百度

title = driver.title # 获取百度首页的title

assert title == '百度一下,你就知道' # 断言

except AssertionError:

raise AssertionError('断言失败!')

driver.quit()

可以看到用例很简单,就是一个普通的函数(驱动浏览器,打开百度首页,断言首页的title是否正确),那么pytest是如何运行测试用例的呢?

我们可以通过cmd终端,并且换到当前用例所在的目录,输入 pytest 即可,运行结果如下所示

pytest执行用例命令行参数

上面我们已经学会了执行用例的命令 就是pytest, 那么真的就这么简单了吗?其实不然,pytest 还提供了很多可供我们执行用例的命令行参数,下面我们就一一介绍并演示

1.-v  :pytest -v 说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等

2.-s  :pytest -s 说明:输入我们用例中的调式信息,比如print的打印信息等,我们在上面用例8行加上一句 print(driver.title),我们再运行一下我们的用例看看

3.-m  :pytest -m ”标记“ 说明:执行特定的测试用例。我们再次修改一下我们的用例,并添加一个新的用例

from selenium import webdriver

import pytest

@pytest.mark.run_this_testcase

def testOpenUrl():

try:

driver = webdriver.Firefox() # 打开浏览器

driver.get('http://www.baidu.com') # 访问百度

title = driver.title # 获取百度首页的title

print(driver.title)

assert title == '百度一下,你就知道' # 断言

except AssertionError:

raise AssertionError('断言失败!')

driver.quit()

def testBaidu():

driver = webdriver.Firefox() # 打开浏览器

driver.get('http://www.baidu.com') # 访问百度

title = driver.title # 获取百度首页的title

assert title == '百度一下,你就知道' # 断言

我们可以看到只执行了被标记的用例,新添加的用例并没有被执行

4.-k  :pytest -k "关键字" 说明:执行用例包含“关键字”的用例

5.-q  :pytest -q 说明:简化控制台的输出,可以看出输出信息和上面的结果都不一样, 下图中有两个..点代替了pass结果

以上5个参数,大家可以自己尝试一下,下一篇文章会继续讲解其他几个常用的参数的使用以及pytest是如何发现测试用例的!

下篇将继续更新其他一些命令选项的使用,和pytest收集测试用例的规则!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/459277.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android学习笔记——Handler(二)

对比请看http://blog.sina.com.cn/s/blog_78c913e30100uqmf.html 以下代码是MainActivity.java中的代码 package com.example.handlertest;import android.app.Activity; import android.os.Bundle; import android.os.Handler;public class MainActivity extends Activity {pr…

纯后台生成highcharts图片有哪些方法?

比如说,领导抛给你一个需求,把一些数据做成图表,每天通过邮件发送,让领导能在邮件中就看到图片,你会有什么思路呢?本人使用的是phantomjs这个神器,它的内核是WebKit引擎,不提供图形界…

操作系统:虚拟页式存储管理(缺页中断、页面置换算法)

1、基本工作原理 1、基本工作原理 在进程开始运行之前,不是全部装入页面,而是装入一个或者零个页面,之后根据进程运行的需要,动态装入其他页面;当内存已满,而又需要装入 新的页面时,则根据某种…

小程序 长按api_高质量的微信小程序样式模板应该长什么样?

现在不懂技术的小白若想快速制作自己的小程序,一般是通过小程序模板来实现。通过在模板上添加自己的图片、文字、商品等等,可以很简单地生成一个小程序。不过要想把小程序做得好看,你得找高质量的小程序样式模板才行。那么高质量的微信小程序…

(笔记)Mysql命令drop database:删除数据库

drop命令用于删除数据库。drop命令格式&#xff1a;drop database <数据库名>;例如&#xff0c;删除名为 xhkdb的数据库&#xff1a;mysql> drop database xhkdb;[例子1] 删除一个已经确定存在的数据库&#xff1a; mysql> drop database drop_database; Query…

web安全测试-AppScan使用分享

这里主要分享如何使用AppScan对一大项目的部分功能进行安全扫描。 ------------------------------------------------------------------------ 其实&#xff0c;对于安全方面的测试知道的甚少。因为那公司每个月要求对产品进行安全扫描。掌握了一人点使用技巧&#xff0c;所…

面试题:找两个有序数组所有数第K小的数

给定两个有序数组arr1和arr2&#xff0c;再给定一个整数k,返回两个数组中所有数中第k小的数。要求&#xff1a;如果arr1的长度为N&#xff0c;arr2的长度为M&#xff0c;时间复杂度请达到O(log(min{M, N}) ) 例如&#xff1a; arr1 {1,2,3,4,5} arr2 {3,4,5} k 1; 因为1为所…

ros 开源物体检测_ROS kinetic + Realsens D435i + ORK + LINEMOD 物体识别

1. ORKORK (Object Recognition Kitchen) 是 ROS 集成的物体识别库&#xff0c;当前 Kinetic 版本的 ROS 只集成了部分功能包的二进制安装文件&#xff0c;所以需通过源码编译安装。安装依赖库sudo apt-get installmeshlabsudo apt-get install libosmesa6-devsudo apt-get ins…

雪碧图sprity 合并多图使用心得

介绍 sprity 是一个模块化的雪碧图生成工具会根据目录中的图片生成相应的雪碧图和样式文件&#xff0c;支持retina图&#xff0c;可以内嵌base64 编码格式的图&#xff0c;支持不同的图片格式和有不同的图片引擎可以选择。sprity 的前身是css-sprite,sprity的 git地址 sprity的…

团队项目第二次冲刺(4)

已经做到两个界面的链接。 今天对用到的数据进行定义及对程序进行完善。 遇到的问题&#xff1a;在进行页面之间的连接时用到的intent语句运用不好。出现了很多次的bug。转载于:https://www.cnblogs.com/cuipengbo/p/4586519.html

itil v4和v3的区别_ITIL从v3到v4 - 这是新的ITIL

ITIL 4即将发布(原计划2019年1月到3月)&#xff0c;v4的领域要大得多&#xff0c;重点放在业务和技术领域&#xff0c;比如我们要如何运作&#xff0c;以及如何通过敏捷&#xff0c;DevOps和数字化转型在未来发挥作用?十年前&#xff0c;比特币推出&#xff0c;詹姆斯卡梅隆发…

面试题:根据Unix时间戳计算时间

根据Unix时间戳计算时间&#xff0c;不分年月大小&#xff0c;每月三十天&#xff0c;每年按360天计算。开始时间1970/01/01 00:00:00,输入秒数&#xff0c;显示时间 思路一&#xff1a;进位&#xff0c;60秒进1分钟&#xff0c;60分进1小时&#xff0c;24小时进1天&#xff0…

华为荣耀6 H60-L02/L12(联通版)救砖包【适用于无限重启】

本帖最后由 HOT米粒 于 2014-11-16 20:43 编辑 华为荣耀6 H60-L02/L12&#xff08;联通版&#xff09;救砖包【适用于无限重启】说明&#xff1a; 1、本工具包用于华为荣耀6 H60-L02&#xff08;联通版&#xff09;&#xff1b; 2、本工具适用于在Honor Logo 无限重启的童鞋恢复…

linux常用命令技巧--更新中

cp –a ojects objects.ori 复制备份目录cp –r 123 123 如果含有子目录一并复制 cp –p 保留文件属性转载于:https://blog.51cto.com/beautifual/1733232

找出无序数组最小的K个数(基于快排,效率高)

快排&#xff1a; void QuickSort(int array[], int low, int high) { if (low > high) //为了防止无限递归下去&#xff0c;导致栈溢出&#xff0c;设置此条件 { return; } int pivotkey array[low]; //设置一个对照元素&#xff0c;把这个元素先暂时拿出来&…

php mysql 存储过程_php调用MySQL存储过程方法

php与mysql是天生的一对,下面我来介绍在php中怎么调用mysql存储过程并执行返回结果,下面我总结了一些常用的php调用MySQL存储过程的方法,有需要了解的同学可参考.MySQL从5.0开始才引入存储过程,反正以前做应用的时候从没碰过,不过现在因为主要作内部系统&#xff0c;所以很多应…

Mysql存储引擎中InnoDB与Myisam的区别

为什么80%的码农都做不了架构师&#xff1f;>>> 1. 事务处理 innodb 支持事务功能&#xff0c;myisam 不支持。 Myisam 的执行速度更快&#xff0c;性能更好。 2. select ,update ,insert ,delete 操作 MyISAM&#xff1a;如果执行大量的SELECT&#xff0c;MyISA…

Android AsyncTask 详解

在Android中实现异步任务机制有两种方式&#xff0c;Handler和AsyncTask。 Handler模式需要为每一个任务创建一个新的线程&#xff0c;任务完成后通过Handler实例向UI线程发送消息&#xff0c;完成界面的更新&#xff0c;这种方式对于整个过程的控制比较精细&#xff0c;但也是…

mysql的rows大小超过8126_mysql大字段(Row size too large8126)

使用mysql并写入数据时发生错误&#xff1a;Row size too large (> 8126).Changing some columns to TEXT or BLOB or using ROW_FORMATDYNAMIC or ROW_FORMATCOMPRESSED may help. In current row format,BLOB prefix of 768 bytes is stored inline.因为表中有多个text字段…

一步步学习javascript基础篇(8):细说事件

终于学到事件了&#xff0c;不知道为何听到“事件”就有一种莫名的兴奋。可能是之前的那些知识点过于枯燥无味吧&#xff0c;说起事件感觉顿时高大上了。今天我们就来好好分析下这个高大上的东西。 可以说&#xff0c;如果没有事件我们的页面就只能阅读了。有了事件&#xff0c…