「python」nosetests的一些代码

声明

工作中需要用到nosetests,网上的信息比较杂乱,自己整理一份,分享给朋友、同事和其他有需要的人。

本人不是大牛,不喜勿喷。

需求

针对于某云端系统api的测试,请求中主要为文字的query(主要是汉字),输出report。测试失败后需要打印query内容到report中。

test_generation

「python」nosetests的一些代码

nosetests默认会找目标目录/.py文件中的test开头的method(具体规则请自行百度或者google),对于不固定测试数据集合的情况,可以使用Generator的方式来进行测试。

官网的说明也很清楚:http://nose.readthedocs.io/en/latest/writing_tests.html#test-generators

说明一点,上图最后一行,assert result,msg,result会用来做assert,失败后会把msg转码成unicode写入到report中。

run函数名的改写

使用functools中的partial和update_wrapper

func=lambda: run(badcase) 作用把run(badcase)改写成func

func.description=...如果使用with-xunit生成report的话,testcase的name会使用这个值来标记每个case

test_generation.__name__=...运行过程中显示的内容

「python」nosetests的一些代码

本人用的nose版本为1.3.7,nose源代码中收集error/failure信息的代码有bug,不能支持上述改写中有中文的情况,需要修改。改动部分主要是下图

  1. 去掉原errorlist字符串的u(不要unicode)

  2. 把message、tb的值encode到utf8

「python」nosetests的一些代码

装饰器的使用

对于需要自己写多个assert函数的情况,可以通过装饰器统一处理返回值的格式化和异常捕获。

  • 装饰器的代码概要

「python」nosetests的一些代码

  • 装饰器的使用

「python」nosetests的一些代码

nosetests的参数输入

推荐使用nose-testconfig

获取地址:https://pypi.python.org/pypi/nose-testconfig#command-line-options


分享到:


相關文章: