jianbing / utx

对Python unittest的功能进行了扩展(用例排序,分组,数据驱动,可视化报告等)
MIT License
145 stars 59 forks source link
unittest

utx

支持Python3.6及以上版本

utx扩展了Python unittest框架的功能,起因是需要控制测试用例的执行顺序,而unittest的默认执行顺序是按照用例函数的名称进行排序,所以想要做一个可以无缝接入unittest的扩展功能库。

当前版本

V0.0.8

安装

python setup.py install

更新

pip uninstall utx   # 需要先卸载旧的utx
python setup.py install

功能列表

@unique
class Tag(Enum):
    ALL = NewTag("完整")  # 完整测试标记,可以重命名,不要删除
    SMOKE = NewTag("冒烟")  # 冒烟测试标记

    # 以下开始为扩展标签,自行调整
    V1_0_0 = NewTag("V1.0.0版本")
    V2_0_0 = NewTag("V2.0.0版本")
class TestLegion(unittest.TestCase):

    @tag(Tag.SMOKE)
    def test_create_legion(self):
        pass

    @tag(Tag.V1_0_0, Tag.ALL)
    def test_quit_legion(self):
        """测试退出军团

        :return:
        """
        print("测试退出军团")
        assert 1 == 2
from utx import *

if __name__ == '__main__':
    setting.run_case = {Tag.ALL}  # 运行全部测试用例
    # setting.run_case = {Tag.SMOKE}  # 只运行SMOKE标记的测试用例
    # setting.run_case = {Tag.SMOKE, Tag.V1_0_0}   # 只运行SMOKE和V1_0_0标记的测试用例

    runner = TestRunner()
    runner.add_case_dir(r"testcase")
    runner.run_test(report_title='接口自动化测试报告')

默认会解包测试数据来一一对应函数参数,可以使用unpack=False,不进行解包

class TestBattle(unittest.TestCase): @data({"gold": 1000, "diamond": 100}, {"gold": 2000, "diamond": 200}, unpack=False) def test_get_battle_reward(self, reward): """ 测试领取战斗奖励

    :return:
    """
    print(reward)
    print("获得的钻石数量是:{}".format(reward['diamond']))

- 检测用例是否编写了用例描述
```python
2017-11-13 12:00:19,334 WARNING legion.test_legion.test_bless没有用例描述

测试报告1

测试报告2

例子

demo目录下,有几个例子: