豐富 pytest 的 assert

strayeagle發表於2020-04-02

前言

一直很喜歡 nose 的 assert,方法多樣,後來打算把所有的用例全部轉換成 pytest,而 pytest 的 assert,相較於 nose,感覺太單調了,再者如果要是直接修改用例這部分的 assert,改動有點多,比較懶,直接抄襲 nose 的 assert 過來給 pytest 用。

看了下 nose 的 assert,來自 nose.tools,掃了下 tools 目錄下的原始碼,繼承自 unittest,直接照抄就是了。

效果

將這部分 code 放在自動化用例公共目錄,驗證一下效果如何:

root@pytest-70-97:/home/pytest_storage/src/common/tools# ll
total 16
drwxr-xr-x 2 root root 4096 Apr  2 18:01 ./
drwxr-xr-x 3 root root 4096 Apr  2 17:47 ../
-rw-r--r-- 1 root root  305 Apr  2 15:05 __init__.py
-rw-r--r-- 1 root root 1184 Apr  2 15:05 trivial.py

檢視一下是否有這些 assert 屬性了:

>>> from common import tools
>>> dir(tools)
['__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'assert_almost_equal', 'assert_almost_equals', 'assert_dict_contains_subset', 'assert_dict_equal', 'assert_equal', 'assert_equals', 'assert_false', 'assert_greater', 'assert_greater_equal', 'assert_in', 'assert_is', 'assert_is_instance', 'assert_is_none', 'assert_is_not', 'assert_is_not_none', 'assert_items_equal', 'assert_less', 'assert_less_equal', 'assert_list_equal', 'assert_multi_line_equal', 'assert_not_almost_equal', 'assert_not_almost_equals', 'assert_not_equal', 'assert_not_equals', 'assert_not_in', 'assert_not_is_instance', 'assert_not_regexp_matches', 'assert_raises', 'assert_raises_regexp', 'assert_regexp_matches', 'assert_sequence_equal', 'assert_set_equal', 'assert_true', 'assert_tuple_equal', 'eq_', 'ok_', 'trivial', 'trivial_all']
>>> 

相關文章