您现在的位置是:首页 >技术杂谈 >实战干货,pytest自动化测试-Git中的测试用例运行(详细)网站首页技术杂谈

实战干货,pytest自动化测试-Git中的测试用例运行(详细)

测试追风 2024-09-23 12:01:06
简介实战干货,pytest自动化测试-Git中的测试用例运行(详细)


前言

我们每天写完自动化用例后都会提交到 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

–picked 参数

我们在已提交过 git 仓库的用例里面新增了 2 个文件 test_new.py 和 test_new_2.py

cd到项目根目录,使用 git status 查看当前分支状态

>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 运行用例

Changed test files
>pytest --picked

... 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:democodexuexi_pytest
collected 4 items

pytest_demo	est_new.py ..                                                                                       [ 50%]
pytest_demo	est_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:democodexuexi_pytest
collected 11 items

pytest_demo	est_new.py ..                                                                                       [ 18%]
pytest_demo	est_new_2.py ..                                                                                     [ 36%]
pytest_demo	est_b.py ......                                                                                     [ 90%]
pytest_demo	est_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

>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	est_new.py ..                                                                                       [ 40%]
pytest_demo	est_new_2.py ..                                                                                     [ 80%]
pytest_demo	est_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	est_new.py ..                                                                                       [ 50%]
pytest_demo	est_new_2.py ..                                                                                     [100%]

================================================== 4 passed in 0.04s ==================================================
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一份努力都值得铭记,每一个坚持都将成为胜利的基石。只要保持前行的勇气和信心,你就能超越自我,实现更远大的梦想。不管身处何方,都要敢于探索未知,迎接挑战。坚定地走向成功的道路,让拼搏与奋斗成为你人生的底色!

前路漫漫,唯有奋斗不息;挑战重重,只争朝夕;成功靠实力,努力才能成就梦想;脚踏实地,勇往直前;任何困难都可以战胜,只要你心中有梦想!

每个人都有属于自己的人生路,虽然前途未卜,但只要心中有梦想,不断努力,就能披荆斩棘,走向成功的彼岸。在追寻梦想的道路上,我们需要坚定信念、勇往直前,才能实现自我价值和人生理想。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。