• Pytest(17)运行未提交的git(pytest-picked)


    前言

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

    安装

    pip3 install pytest-picked
    

    使用示例

    $ pytest --picked
    
    $ pytest --picked=first
    
    $ pytest --picked --mode=branch
    
    $ pytest --picked --mode=unstaged  # default
    
    $ pytest --picked --mode=branch --parent-branch=main # if your parent branch differs from "master"
    

    --picked 参数

    我们在已提交过 git 仓库的用例里面新增了 1 个文件 test_new.py
    cd到项目根目录,使用git status查看当前分支状态

    > git status
    
    On branch master
    Your branch is up to date with 'origin/master'.
    
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            new file:   case/test_new.py
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   case/test_new.py
    

    可以看到有1个文件,使用 pytest --picked 运行用例

    Changed test files... 1. ['case/test_new.py']
    collecting ... 
     case/test_new.py ✓                                                                                                                                                                                      100% ██████████
    
    Results (0.04s):
           1 passed
    

    --picked=first

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

    --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 查看当前分支的状态,此时会看到 case/test_new2.py 是 Untracked files
    > git status
    
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            new file:   case/test_new.py
    
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   case/test_new.py
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
            case/test_new2.py
    

    运行 pytest --picked 会默认执行所有的 Untracked 文件和 not staged 文件,默认是--mode=unstaged。

    collecting ... 
     case/test_new2.py::test_2 ✓                                                                                                                                                                              50% █████     
     case/test_new.py::test_1 ✓                                                                                                                                                                              100% ██████████
    

    如果我们只需运行当前分支上已经被暂存,但尚未提交的文件(不包含 Untracked files)
    运行 pytest --picked --mode=branch, 运行分支上已经被暂存但尚未提交的代码

    (pytest_env) ➜  apitest git:(master) ✗ pytest --picked --mode=branch
    
    Changed test files... 1. ['case/test_new.py']
    Changed test folders... 0. []
    collecting ... 
     case/test_new.py::test_1 ✓                                                                                                                                                                              100% ██████████
    
  • 相关阅读:
    实用分页小方法
    Android:Handler实现异步处理功能
    Android--sharepreference总结
    安卓 如何向数据库传值
    Activity 之间的传值
    Android 双击返回键退出程序 实现
    HttpUtitlity.UrlEncode
    android 如何设置背景的透明度
    比较Date时间先后
    iOS 判断字符串中含有某个字符串 rangeOfString
  • 原文地址:https://www.cnblogs.com/jiakecong/p/14297580.html
Copyright © 2020-2023  润新知