Python

多重校验插件(pytest-assume)

janice No Comments

前言

pytest中可以用python的assert断言,也可以写多个断言,但一个失败,后面的断言将不再执行

 

安装插件

pip3 install pytest-assume -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

 

 

assert多重断言

def test_add1():
    assert 1 + 4 == 5
    assert 1 + 3 == 3
    assert 2 + 5 == 7
    assert 2 + 5 == 9
    print("测试完成")

执行结果

结论

可以看到,第二行断言失败之后,后面的断言也不会执行,包括正常的代码

 

pytest.assume多重断言

def test_add2():
    pytest.assume(1 + 4 == 5)
    pytest.assume(1 + 3 == 3)
    pytest.assume(2 + 5 == 7)
    pytest.assume(2 + 5 == 9)
    print("测试完成")

执行结果

结论

  • 可以看到,第二行即使断言失败,后面的断言还是会继续执行
  • 这有助于我们分析和查看到底一共有哪些断言是失败的
  • 而且最后的代码也还会正常执行,比直接用assert更高效

 

FOR函数+列表+字典的处理

janice No Comments

两个简单的函数例子,处理列表和字典:

list1 = [{'field':'v1', 'key':'k1'},{'field':'v2', 'key':'k2'},{'field':'v3', 'key':'k3'} ]

dict1 = {'k1':100,'k2':200, 'k3':300}
dict2 =dict([(k['field'],dict1[k['key']]) for k in list1])
print(dict2)
result = [{'addr': '501', 'field': 'height_1'}]
result2 = {'height_1': '3.222'}

macro_dict =  dict([(k['addr'],result2[k['field']]) for k in result])
print(macro_dict)

以上两个例子也是for函数的简单运用。

字典按Key排序 转字符串

janice No Comments

普通字典默认是无序的,有序的字典需要用到OrderedDict:

简单例子如下:

import collections,json

json_send = {"Timeout": "10", "CNCFile": "O6666", "CNC": "CNC_3", 
"LocalFile": "E:\\xtec\\test\\TESTING",
"CNCPath": "//CNC_MEM/USER/PATH1/", "Command": "FTPSendFile"}

d1 = collections.OrderedDict()
for i in sorted(json_send): 
    d1[i] = json_send[i]
    print(d1)
print(json.dumps(d1))

分类目录

关于我

 Janice 詹

QQ   455899417

janice2014@foxmail.com