跳转至

pytest 助手

点击这里,边看视频讲解,边学习以下内容

这个助手有什么用

pytest 助手 让大家通过 图形界面来

  • 挑选要执行哪些用例

  • 实时查看执行过程,支持远程执行查看

  • 产生漂亮的测试报告

该软件永久开源免费。 点击这里访问它的 Github 网址, 如果满意请给它加一颗星

安装

安装很简单,需要 Python 解释器版本 3.8 以上,使用如下命令安装

pip install pytest-assist


可以使用国内源,比如

pip install pytest-assist -i https://pypi.tuna.tsinghua.edu.cn/simple

运行pytest助手

图形界面模式

要运行 pytest 助手, 只需要进入到测试自动化 项目根目录

然后执行

python -m pytest_assist

注意,上面的 pytest_assist 中间的是 下划线 ,而不是中划线


如果用的是Windows系统,启动时自动打开客户端窗口。

这种界面其实就是浏览器窗口,只不过隐藏了地址栏工具栏。

你也可以浏览器直接打开,比如 http://127.0.0.1:48530


因为服务缺省的端口是 48530

万一端口冲突了,可以这样命令行指定 端口

# 指定 IP , HTTP端口
python -m pytest_assist  --host 0.0.0.0 --port 10000 

# 指定 websocket端口
python -m pytest_assist  --wsport 30000

# 同时指定 HTTP端口 websocket端口
python -m pytest_assist  --port 10000 --wsport 30000


如果你在外企工作,希望是英文界面,使用英文版操作系统即可。

或者使用如下命令启动

python -m pytest_assist --lang en


界面左上角会显示 websocket 连接状态

只产生报告

如果你只想让 pytest 助手 帮你产生测试报告,不需要启动图形界面,可以这样运行测试

python -m pytest -p pytest_assist.plugin --assist-report=myreport.html

挑选用例执行

点击界面 测试参数设置 按钮,打开挑选用例的界面

可以根据3种方式选择:

  • 选择要执行的 用例文件/用例类/用例函数

  • 根据 用例 nodeid 包含的关键字 选择

  • 根据 用例标签 选择

具体操作,详见视频讲解。


缺省是保存测试记录的,这样测试完可以根据记录文件产生报告。


测试名作为测试记录的名称的, 名称里面的字符,必须是 字母 数字 - _ 这几种符号,不能有空格

挑选好用例后,点击执行测试按钮,就发起测试了。

保存 测试参数

有些测试,挑选用例的参数比较多,比如 根据nodeid关键字, 选择目标文件,类,函数 这些规则的混合选择

如果每次执行都操作一遍很麻烦,这时可以点击界面 保存测试参数 的按钮,保存起来。

下次只需双击保存的记录,即可加载到界面上

查看进度和统计

发起测试后, 下方会 显示测试的名称/开始结束时间/工作目录

并且会显示执行进度,包括总计要执行多少测试用例,已经执行了多少个测试用例,剩余多少,并且有进度条显示进度


再下方是 显示用例执行的 各种测试结果数量:通过/不通过/错误(主要是初始化清除过程产生的错误)/预期不通过 等

数量为0的种类不显示


再下方是测试详情,就是具体各个用例的执行细节, 包括:用例 nodeid 名, setup/call/teardown 阶段 各自花费的时间

另外 显示 这3 阶段 :

  • report记录信息

由用例代码调用 pytest助手的库产生,后面会详细讲解如何使用

  • print 打印信息

如果代码调用了print打印信息,灰色背景会展示这些信息

  • 捕获的错误信息

如果代码执行过程产生了错误,比如抛出异常 , assert 检查点不通过,淡红色背景会展示这些信息

测试结果详情可以 整体折叠/打开,点击单个用例nodeid栏可以单独 打开/折叠

另外可以勾选是否显示 通过的用例/不通过的用例/有初始化清除错误的用例, 方便重点查看


测试过程支持多个浏览器查看,特别适合长时间的自动化测试时,多个测试人员在各自的电脑上查看。

中止测试

有时候,一个比较长的测试,我们中途发现问题需要停止。

可以点击右上角的 中止测试 按钮。

这种中止测试的方式主要对远程执行比较有帮助。


如果你的测试用例代码写的有问题,导致用例执行长时间不退出。 这个时候就需要强制终止。 点击界面右上角的 强制停止测试 按钮即可 。

这个操作本质上是让 助手后端服务重启。


如果你想直接停止助手的后端服务,点击右上角 关闭后台 按钮即可。

如果是本地执行的测试,当然也可以 直接在命令行窗口按 ctrl c 键停止后端服务程序。

保存的测试记录

如果你想查看以前保存的测试结果,在左边 结果记录 这一栏选择对应的记录, 双击即可打开 。

和实时查看结果一样,以前的记录结果详情 也可以 整体折叠/打开,点击单个用例nodeid栏可以单独 打开/折叠。

另外也可以勾选是否显示 通过的用例/不通过的用例/有初始化清除错误的用例, 方便重点查看


如果你想删除一个记录,只需要按住shift键,双击该记录,就可以删除。

如果想删除全部历史记录, 点击右边的 全部删除 按钮即可。

导出测试报告

测完的结果想作为报告发给其他人,只需要在查看结果记录界面的右上角点击 导出报告 按钮。

然后选择本地保存的地址 即可下载 测试报告。

下载的测试报告是一个zip文件,解压后,里面包含的测试报告是一个html文件,双击即可在浏览器中打开 。

report 信息

我们想 把测试运行中的一些信息 写入到记录报告中,该怎么做呢?

调用python的 print函数输出的内容是可以出现在报告中的 但是我们不推荐这种方式 。

print函数更适合输出一些 临时的 调试 要展现的信息。等用例开发完成后,这些print函数代码语句最好注释掉。


pytest助手 推荐使用的是pytest助手库 里面的报告函数。

常用的有

log_str

这是基本的报告信息函数,可以指定颜色和粗细

其它用法和print函数基本差不多

比如

from pytest_assist import log_str

username = 'byhy'

def test_C009001():

    log_str(1,'打开登录界面进行登录,使用账号', username,
      color='green', weight='bold')

    sleep(1)      # 模拟登录操作和登录后的验证耗时

    log_str(2, '登录成功', '需要更多的测试结果',
      color='green', weight='bold')
    log_str('有些注意点,人工核对结果时请注意', color='chocolate')
    log_str('注意点1')
    log_str('注意点2', end='')
    log_str('|2的后续信息')

其它快捷函数

pytest 助手为常用的report功能做了一些快捷函数

比如:

  • 记录测试步骤

可以使用 log_step

from pytest_assist import log_str, log_step

def test_C009001():

    log_step(1, '打开登录界面进行登录,使用账号byhy')

    log_str('其它的一些信息')

    sleep(1)      # 模拟登录操作和登录后的验证耗时

    log_step(2, '登录成功', '需要更多的测试结果')

    log_str('其它的一些信息')
  • 颜色输出快捷函数

比如 log_str_redlog_str_greenlog_str_blue

from pytest_assist import log_step, log_str_red, log_str_blue

def test_C009001():

    log_step(1, '打开登录界面进行登录,使用账号byhy')

    log_str_red('其它的一些信息')

    sleep(1)      # 模拟登录操作和登录后的验证耗时

    log_step(2, '登录成功', '需要更多的测试结果')

    log_str_blue('其它的一些信息')

如果这些颜色不够,可以自己封装,

比如在自己的库中这样定义

def log_str_darkred(*args, sep=' ', end='\n', weight=None):
    log_str(*args, sep=sep, end=end, 
      color='darkred', weight=weight)


pytest助手的记录细节中,会依次展示

  • report信息输出内容,白色背景

  • 终端屏幕输出内容,灰色背景

  • pytest错误细节,淡红色背景

截屏

做web浏览器自动化时, 往往希望能截屏浏览器界面,帮助定位。

那么这些截屏图片怎么添加到report里面呢?

使用 函数 selenium_screenshot

比如

from pytest_assist import selenium_screenshot, log_str

def test_C00888():
    from selenium import webdriver

    wd = webdriver.Chrome()

    wd.get('https://www.byhy.net')


    log_str('截屏前\n\n')
    selenium_screenshot(wd)
    log_str('\n\n截屏后')

这样 图片信息就可以很好的融入测试报告步骤中