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是如何发现测试用例的!

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

(0)

相关推荐

  • 详解Python 定时框架 Apscheduler原理及安装过程

    在我们的日常工作自动化测试当中,几乎超过一半的功能都需要利用定时的任务来推动触发,例如在我们项目中有一个定时监控模块,根据自己设置的频率定时跑测试用例,定时检测是否存在线上紧急任务等等,这些都涉及到了有关定时任务的问题,很多情况下,大多数人会选择window的任务计划程序,但如果程序不在window平台下运行,就不能定时启动了:当然也可利用time模块的time.sleep()方法使程序休眠来达到定时任务的目的,但定时任务多了,代码可能看起来不太那么友好且有很大的局限性,因此,此时的 Apsch

  • python web自制框架之接受url传递过来的参数实例

    我们知道,在django里有个request,可以接收表单等前端传过来的数据,现在我们也做一个类似的功能. 首先我们定义一个类class,然后初始化数据与定义保存参数的方法,如下: class Request(object): def __init__(self): self.method = 'GET' self.path = '' self.query = {} self.body = '' def form(self): body = urllib.parse.unquote(self.b

  • python3+selenium自动化测试框架详解

    背景 为了更好的发展自身的测试技能,应对测试行业以及互联网行业的迭代变化.自学python以及自动化测试. 虽然在2017年已经开始接触了selenium,期间是断断续续执行自动化测试,因为还有其他测试任务,培训任务要执行- 前期建议大家能够学习python基本语法(python基础教程) 任务 搭建自动化测试框架,并能有效方便的进行测试,维护成本也要考虑其中. 过程 我的自动化框架可能不成熟,因为是自学的.请多包涵.也请大佬指导~ common 包含:基本的公共方法类,比如HTML报告.Log

  • Scrapy框架爬取Boss直聘网Python职位信息的源码

    分析 使用CrawlSpider结合LinkExtractor和Rule爬取网页信息 LinkExtractor用于定义链接提取规则,一般使用allow参数即可 LinkExtractor(allow=(), # 使用正则定义提取规则 deny=(), # 排除规则 allow_domains=(), # 限定域名范围 deny_domains=(), # 排除域名范围 restrict_xpaths=(), # 使用xpath定义提取队则 tags=('a', 'area'), attrs=(

  • python flask框架实现传数据到js的方法分析

    本文实例讲述了python flask框架实现传数据到js的方法.分享给大家供大家参考,具体如下: 首先要清楚后台和前端交互所采用的数据格式. 一般选JSON,因为和js完美贴合. 后台返回的数据进行序列化 在/homepageRecommend 路由的 view方法中返回序列化数据 dict = {"a":1, "b":2}<br data-filtered="filtered"> import json json.dumps(di

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

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

  • python的pytest框架之命令行参数详解(下)

    前言 上篇说到命令行执行测试用例的部分参数如何使用?今天将继续更新其他一些命令选项的使用,和pytest收集测试用例的规则! pytest执行用例命令行参数 --collect-only:罗列出所有当前目录下所有的测试模块,测试类及测试函数 --tb=style:屏蔽测试用例执行输出的回溯信息,可以简化用例失败时的输出信息.style可以是 on,line,short,具体区别请自行体验 --lf:当一次用例执行完成后,如果其中存在失败的测试用例,那么我们可以使用此命令重新运行失败的测试用例 我

  • PHP 命令行参数详解及应用

    复制代码 代码如下: # 不带参数的执行格式 php安装目录/bin/php scriptname.php # 带参数的执行格式 php安装目录/bin/php scriptname.php [参数1] [参数2] ..... 在scriptname.php通过$argv和$argc访问参数 # $argv(正式写法$_SERVER['argv'])数组保存着传递的全部参数,需要注意的是第一个参数$argv[0] / $_SERVER['argv'][0] 为执行脚本的名称如, scriptna

  • python 如何利用argparse解析命令行参数

    命令行参数工具是我们非常常用的工具,比如当我们做实验希望调节参数的时候,如果参数都是通过硬编码写在代码当中的话,我们每次修改参数都需要修改对应的代码和逻辑显然这不太方便.比较好的办法就是把必要的参数设置成通过命令行传入的形式,这样我们只需要在运行的时候修改参数就可以了. sys.argv 解析命令行传入参数最简单的办法就是通过sys.argv,sys.argv可以获取到我们通过命令行传入的参数. import sys print(sys.argv) 用法很简单,只需要调用sys.argv即可.a

  • Python 中使用 argparse 解析命令行参数

    目录 1.Python 中的参数解析 2.类型 3.子命令 4.程序架构 使用 argparse 模块为应用程序设置命令行选项. 有一些第三方库用于命令行解析,但标准库 argparse 与之相比也毫不逊色. 无需添加很多依赖,你就可以编写带有实用参数解析功能的漂亮命令行工具. 1.Python 中的参数解析 使用 argparse 解析命令行参数时,第一步是配置一个 ArgumentParser 对象.这通常在全局模块内完成,因为单单_配置_一个解析器没有副作用. import argpars

  • Python脚本开发中的命令行参数及传参示例详解

    目录 sys模块 argparse模块 Python中的正则表达式 正则表达式简介 Re模块 常用的匹配规则 sys模块 在使用python开发脚本的时候,作为一个运维工具,或者是其他工具需要在接受用户参数运行时,这里就可以用到命令行传参的方式,可以给使用者一个比较友好的交互体验. python可以使用 sys 模块中的 sys.argv 命令来获取命令行参数,其中返回的参数是一个列表 在实际开发中,我们一般都使用命令行来执行 python 脚本 使用终端执行python文件的命令:python

  • Python argparse模块实现解析命令行参数方法详解

    argparse是Python的一个标准模块,用于解析命令行参数,即解析sys.argv中定义的参数.实现在:传送门 argparse模块还会自动生成帮助和使用信息,即在最后加-h或--help.当用户输入的参数无效时,会触发error,并给出出错原因. python test_argparse.py -h python test_argparse.py --help 使用argparse的步骤: 1.创建解析器:argparse.ArgumentParser(),ArgumentParser是

  • pytest框架之fixture详细使用详解

    本人之前写了一套基于unnitest框架的UI自动化框架,但是发现了pytest框架之后觉得unnitest太low,现在重头开始学pytest框架,一边学习一边记录,和大家分享,话不多说,那就先从pytest框架的精髓fixture说起吧! 简介: fixture区别于unnitest的传统单元测试(setup/teardown)有显著改进: 1.有独立的命名,并通过声明它们从测试函数.模块.类或整个项目中的使用来激活. 2.按模块化的方式实现,每个fixture都可以互相调用. 3.fixt

  • Python ORM数据库框架Sqlalchemy的使用教程详解

    目录 概念和数据类型 安装 连接 创建数据库表类(模型) 生成数据库表 会话 增删改查 增 查 改 删 执行裸sql with关闭会话 sql建造者模式 封装的工具 数据库配置文件database.properties 工具 测试实体 验证代码 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据

  • python matplotlib:plt.scatter() 大小和颜色参数详解

    语法 plt.scatter(x, y, s=20, c='b') 大小s默认为20,s=0时点不显示:颜色c默认为蓝色. 为每一个点指定大小和颜色 有时我们需要为每一个点指定大小和方向,以区分不同的点.这时,可以向s和c传入列表.如: import matplotlib.pyplot as plt import numpy as np x = list(range(1, 7)) plt.scatter(x, x, s=10*np.array(x)**2, c=x) plt.show() 参数s

随机推荐