pytest文档59-运行未提交git的用例(pytest-picked)
前言
我们每天写完自动化用例后都会提交到 git 仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交 git 仓库的用例。
pytest-picked 插件可以实现只运行未提交到git仓库的代码。
pytest-picked
使用命令行安装
pip install pytest-picked
可使用参数
picked:
--picked=[{only,first}]
Run the tests related to the changed files either on their own, or first
--mode=PICKED_MODE Options: unstaged, branch
使用示例:
$ pytest --picked
$ pytest --picked=first
$ pytest --picked --mode=branch
$ pytest --picked --mode=unstaged # default
github仓库地址https://github.com/anapaulagomes/pytest-picked
--picked 参数
我们在已提交过 git 仓库的用例里面新增了 2 个文件 test_new.py 和 test_new_2.py

cd到项目根目录,使用 git status 查看当前分支状态
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
>git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: pytest_demo/test_new.py
new file: pytest_demo/test_new_2.py
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: pytest_demo/test_new.py
modified: pytest_demo/test_new_2.py
可以看到有2个文件,使用 pytest --picked 运行用例
>pytest --picked
Changed test files... 2. ['pytest_demo/test_new.py', 'pytest_demo/test_new_2.py']
Changed test folders... 0. []
================================================= test session starts =================================================
platform win32 -- Python 3.6.6, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
Test order randomisation NOT enabled. Enable with --random-order or --random-order-bucket=<bucket_type>
rootdir: D:\demo\code\xuexi_pytest
collected 4 items
pytest_demo\test_new.py .. [ 50%]
pytest_demo\test_new_2.py .. [100%]
================================================== 4 passed in 0.20s ==================================================
所有测试都将从已修改但尚未提交的文件和文件夹中运行。
--picked=first
首先运行修改后的测试文件中的测试,然后运行所有未修改的测试
>pytest --picked=first
================================================= test session starts =================================================
platform win32 -- Python 3.6.6, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
rootdir: D:\demo\code\xuexi_pytest
collected 11 items
pytest_demo\test_new.py .. [ 18%]
pytest_demo\test_new_2.py .. [ 36%]
pytest_demo\test_b.py ...... [ 90%]
pytest_demo\test_c.py . [100%]
================================================= 11 passed in 0.10s ==================================================
--mode=PICKED_MODE
--mode 有2个参数可选 unstaged, branch, 默认是--mode=unstaged
git 文件的2个状态
- untrack 没加到git里面的新文件
- unstaged staged:暂存状态, unstage就是未暂存状态,也就是没git add 过的文件
先弄清楚什么是 untrack 状态,当我们 pycharm 打开 git 项目,新增一个文件的时候,会弹出询问框:是否加到 git 文件

如果选择是,文件会变绿色,也就是 unstage 状态(没git add 过);选择否,那就是一个新文件,未被加到当前分支的 git 目录里面,文件颜色是棕色。
git status 查看当前分支的状态,此时会看到 pytest_demo/test_3.py 是 Untracked files
# 作者-上海悠悠 QQ交流群:717225969
# blog地址 https://www.cnblogs.com/yoyoketang/
>git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: pytest_demo/test_new.py
new file: pytest_demo/test_new_2.py
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: pytest_demo/test_new.py
modified: pytest_demo/test_new_2.py
Untracked files:
(use "git add <file>..." to include in what will be committed)
.idea/
pytest_demo/__pycache__/
pytest_demo/test_3.py
运行 pytest --picked 会默认执行所有的 Untracked 文件和 not staged 文件,默认是--mode=unstaged。
>pytest --picked
Changed test files... 3. ['pytest_demo/test_new.py', 'pytest_demo/test_new_2.py', 'pytest_demo/test_3.py']
Changed test folders... 2. ['.idea/', 'pytest_demo/__pycache__/']
================================================= test session starts =================================================
platform win32 -- Python 3.6.6, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
collected 5 items
pytest_demo\test_new.py .. [ 40%]
pytest_demo\test_new_2.py .. [ 80%]
pytest_demo\test_3.py . [100%]
================================================== 5 passed in 0.06s ==================================================
如果我们只需运行当前分支上已经被暂存,但尚未提交的文件(不包含 Untracked files),使用 git diff 查看分支代码的差异
>git diff --name-only master
pytest_demo/test_new.py
pytest_demo/test_new_2.py
运行 pytest --picked --mode=branch, 运行分支上已经被暂存但尚未提交的代码
>pytest --picked --mode=branch
Changed test files... 2. ['pytest_demo/test_new.py', 'pytest_demo/test_new_2.py']
Changed test folders... 0. []
================================================= test session starts =================================================
platform win32 -- Python 3.6.6, pytest-6.0.2, py-1.9.0, pluggy-0.13.1
collected 4 items
pytest_demo\test_new.py .. [ 50%]
pytest_demo\test_new_2.py .. [100%]
================================================== 4 passed in 0.04s ==================================================
作者-上海悠悠 QQ交流群:717225969
blog地址 https://www.cnblogs.com/yoyoketang/
pytest文档59-运行未提交git的用例(pytest-picked)的更多相关文章
- Pytest(17)运行未提交的git(pytest-picked)
前言 我们每天写完自动化用例后都会提交到 git 仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交 git 仓库的用例.pytest-picked 插件可以 ...
- pytest文档3-pycharm运行pytest
前言 上一篇pytest文档2-用例运行规则已经介绍了如何在cmd执行pytest用例,平常我们写代码在pycharm比较多 写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻 ...
- pytest文档50-命令行参数--durations统计用例运行时间
前言 写完一个项目的自动化用例之后,发现有些用例运行较慢,影响整体的用例运行速度,于是领导说找出运行慢的那几个用例优化下. --durations 参数可以统计出每个用例运行的时间,对用例的时间做个排 ...
- pytest文档2-用例运行规则
用例设计原则 文件名以test_*.py文件和*_test.py 以test_开头的函数 以Test开头的类 以test_开头的方法 所有的包pakege必须要有__init__.py文件 help帮 ...
- pytest文档7-pytest-html生成html报告
前言 pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告.兼容Python 2.7,3.6 pytest-html 1.github上源码地址[https://github. ...
- Error-Javascript:错误:页面文档类型(DOCTYPE)未声明!
ylbtech-Error-Javascript:错误:页面文档类型(DOCTYPE)未声明! 1.返回顶部 1. HTML1300: 进行了导航.文件: TransferNote.aspxHTML1 ...
- pytest文档55-plugins插件开发
前言 前面一篇已经学会了使用hook函数改变pytest运行的结果,代码写在conftest.py文件,实际上就是本地的插件了. 当有一天你公司的小伙伴觉得你写的还不错,或者更多的小伙伴想要你这个功能 ...
- 魔改——MFC MDI程序 定制 文档模板 运行时全部打开 禁用关闭按钮
==================================声明================================== 本文原创,转载在正文中显要的注明作者和出处,并保证文章的完 ...
- pytest文档19-doctest测试框架
前言 doctest从字面意思上看,那就是文档测试.doctest是python里面自带的一个模块,它实际上是单元测试的一种. 官方解释:doctest 模块会搜索那些看起来像交互式会话的 Pytho ...
随机推荐
- PHP 类的构造方法 __construct()
1. 构造方法简介 构造方法 __construct() 是一种类结构特有的特殊方法,该方法由系统规定好 实例化一个类时:先调用该方法,再返回类的对象 构造方法也是普通方法,不同之处就是在实例化类时会 ...
- Appium之启动第一个App
搭建appium自动化环境真是各种问题呀. 如何启动在真机上启动App? 执行操作:操作Android真机上打开手机淘宝app,并搜索“熊猫”. 脚本源码如下: from appium import ...
- maximo开发小结
maximo的后台开发 从0开始的 就把自己写的一些代码放者 1. setWhere 的效果是在原有的sql上添加一个and 以及这个条件mboSetRemote.setWhere("EN ...
- redis实现计数器
用redis实现计数器 社交产品业务里有很多统计计数的功能,比如: 用户: 总点赞数,关注数,粉丝数 帖子: 点赞数,评论数,热度 消息: 已读,未读,红点消息数 话题: 阅读数,帖子数,收藏数 统计 ...
- 确成硅化+恒力+苏大文正节点2 oracle ora-4030 错误pga version:11204
Errors in file /u01/app/oracle/oracle/diag/rdbms/orcl/orcl/trace/orcl_j000_61543.trc (incident=18009 ...
- minium-微信小程序自动化框架-python,官方文档
minium文档 个人将其部署到了自己的服务器上,如有需要可以访问共同学习这个minium 用python来实现小程序自动化测试... 文档地址 http://49.232.203.244:3000/ ...
- Linux/(centos、unix等)的ssh双向免密登录原理和实现
原理: 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录. 双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要实现集群中的每一台机器都保存其他 ...
- Spring Eureka 本地Docker集群部署
故事背景 最近因为产线使用的服务与发现服务,使用的是Spring Cloud Eureka集群部署,为了以后调试产线的问题,想在本地搭建和产线一样的环境.产线的所有服务都是基于K8s和Docker部署 ...
- Win10安装Ubuntu子系统
相信我,这是最后一次折腾系统了qaq,以后一定开始认真用Linux编程 跟的一个博客安装,传送门:Win10安装Ubuntu子系统及图形化界面详细教程 文章是2019的,加上我装的是Ubuntu 20 ...
- java 常用类-StringBuffer-StringBuilder
二.StringBuffer类&StringBuilder类 2.1 简介 java.lang.StringBuffer.StringBuilder代表可变的字符序列,可以对字符 串内容进行增 ...