首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytest文档59-运行未提交git的用例(pytest-picked)

pytest文档59-运行未提交git的用例(pytest-picked)

作者头像
上海-悠悠
发布于 2020-09-18 06:19:19
发布于 2020-09-18 06:19:19
87500
代码可运行
举报
运行总次数:0
代码可运行

前言

我们每天写完自动化用例后都会提交到 git 仓库,随着用例的增多,为了保证仓库代码的干净,当有用例新增的时候,我们希望只运行新增的未提交 git 仓库的用例。 pytest-picked 插件可以实现只运行未提交到git仓库的代码。

pytest-picked

使用命令行安装

pip install pytest-picked

可使用参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
picked:
  --picked=[{only,first}]
                        Run the tests related to the changed files either on their own, or first
  --mode=PICKED_MODE    Options: unstaged, branch

使用示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ 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 查看当前分支状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 作者-上海悠悠 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 运行用例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>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

首先运行修改后的测试文件中的测试,然后运行所有未修改的测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 作者-上海悠悠 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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>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 查看分支代码的差异

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>git diff --name-only master
pytest_demo/test_new.py
pytest_demo/test_new_2.py

运行 pytest --picked --mode=branch, 运行分支上已经被暂存但尚未提交的代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>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 ==================================================
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
NodeJS文件系统(fs)与流(stream)
文件标记(flags): http://nodejs.cn/api/fs.html#fs_fs_open_path_flags_mode_callback
九旬
2020/10/23
1.5K0
NodeJS 读写文件 🎠
操作文件主要包括读和写。而这些功能 NodeJS 都已经提供了对应的方法。只要调用就行了。
德育处主任
2022/08/30
2.1K0
Node.js 中使用 fs 模块进行文件读写操作详解
在现代 Web 开发中,Node.js 以其独特的非阻塞 I/O 和事件驱动架构,已经成为服务器端开发的首选平台之一。而在 Node.js 的核心模块中,fs(文件系统)模块扮演着至关重要的角色。它提供了丰富的 API,使得开发者能够轻松地进行文件的读取、写入、追加、复制和删除等操作。本文将深入探讨 fs 模块的使用方法,通过详细的示例代码,帮助读者掌握在 Node.js 环境下进行文件操作的基本技能。
Front_Yue
2024/12/25
6950
Node.js 中使用 fs 模块进行文件读写操作详解
nodeJs基础Api
所有能够触发事件的对象都是EventEmitter类的实例,这个对象开放了EventEmitter.on()函数允许将一个或多个函数绑定到被对象触发的命名事件上。
切图仔
2022/09/14
3640
node 相关知识学习
一:file模块 1、两种导出方式 module.exports = {fn,student} 或 exports.fn = fn 2、同步把内容写入到文件 let fs = require('fs') // 同步打开文件 let fd = fs.openSync('text.txt','w') // 写入内容 let str = '臭鱼111' fs.writeFileSync(fd,str) // 退出文件 fs.close
xyzzz
2021/08/01
2500
nodejs操作文件系统(一)
Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:
OECOM
2020/07/01
1.1K0
【快速复习】Node.js中的fs模块的使用
JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。
张张
2020/03/06
1.5K0
【快速复习】Node.js中的fs模块的使用
Node.js学习笔记(二)——Node.js模块化、文件读写、环境变量
(1)、在浏览器端使用var或不使用关键字定义的变量属于全局作用域,也就是可以使用window对象访问。
张果
2022/09/28
6.5K0
Node.js学习笔记(二)——Node.js模块化、文件读写、环境变量
邂逅Node.JS的那一夜
本篇文章,并不完全适合小白,需要有一定的HTML、CSS、JS、HTTP、Web等知识及基础学习:
Java_慈祥
2024/08/03
2410
邂逅Node.JS的那一夜
Node入门教程(9)第七章:NodeJs的文件处理
Node的文件处理涉及到前面说的ptah模块,以及fs文件系统、stream流处理、Buffer缓冲器等模块。内容可能比较多,相关内容请以官网文档为主,此处主要以案例讲解为主,分享给大家一些常用的经典案例。细节就不展开了。 fs文件系统 fs模块提供了很多文件操作相关的api,比如:监控文件夹、文件,文件重命名,文件读写,文件修改权限、文件读写流等。 在此,我们仅以几个案例的方式来驱动学习Node的文件系统,细节请详细阅读Node的api文档或者源码。 案例: 如何监控文件夹的变化? 如何读取一个文
老马
2018/04/16
1.5K0
Node.js 高级进阶之 fs 文件模块学习
文件操作是开发过程中并不可少的一部分,作为一名 Node.js 开发工程师更应该熟练掌握fs模块的相关技巧。Node.js 中的 fs 模块是文件操作的封装,它提供了文件读取、写入、更名、删除、遍历目录、链接等 POSIX 文件系统操作。与其它模块不同的是,fs 模块中所有的操作都提供了异步和同步的两个版本,具有 sync 后缀的方法为同步方法,不具有 sync 后缀的方法为异步方法
coder_koala
2019/07/30
1.6K0
Node.js 高级进阶之 fs 文件模块学习
nodejs(一)
使用快捷键(Windows徽标键+ R)打开运行面板,输入cmd 后直接回车,即可打开终端。
且陶陶
2023/04/12
6260
nodejs(一)
【Node.js】01 —— fs模块全解析
另外,Node.js 还提供了诸如 fs.readdir()(异步读取目录内容)和 fs.readdirSync()(同步读取目录内容)等方法,用于枚举指定目录中的文件和子目录。同时,还有 fs.promises.readdir() 提供基于Promise的异步API。
空白诗
2024/06/14
5640
node之http模块之fs模块(续)
爱学习的前端歌谣
2023/12/21
1570
node之http模块之fs模块(续)
05_Node js 文件管理模块 fs
会发现目录下多了一个 index.js 文件夹,并且添加了“hello NodeJS!”的内容。
全栈程序员站长
2022/06/30
1.1K0
Node·七天学会 NodeJS
以上程序使用 fs.readFileSync 从源路径读取文件内容,并使用 fs.writeFileSync 将文件内容写入目标路径。
数媒派
2022/12/01
2.3K0
nodejs中的文件系统
nodejs使用了异步IO来提升服务端的处理效率。而IO中一个非常重要的方面就是文件IO。今天我们会详细介绍一下nodejs中的文件系统和IO操作。
程序那些事
2021/01/28
1.5K0
Nodejs中对文件执行读写操作(多demo)
在nodejs中实现对文件及目录读写操作的功能是fs模块。另外与文件及目录操作相关的一个模块是path模块。
前端_AWhile
2019/08/29
2K0
【Nodejs】240-有助于理解前端工具的 node 知识
缘起 平时写惯了业务代码之后,如果想要了解下 webpack 或者 vue-cli,好像是件很难上手的事情? 。拿 webpack 来说,我们可能会对配置熟悉点,但常常一段时间过后又忘了,感觉看起来不
pingan8787
2019/07/25
4990
【Nodejs】240-有助于理解前端工具的 node 知识
《Node.js》核心技术教程(笔记)
模块化是一种设计思想,利用模块化可以把一个非常复杂的系统结构细化到具体的功能点,每个功能点看作一个模块,然后通过某种规则把这些小的模块组合到一起,构成模块化系统。
爱学习的程序媛
2022/04/07
1.9K0
《Node.js》核心技术教程(笔记)
相关推荐
NodeJS文件系统(fs)与流(stream)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档