范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

用Python为接口测试自动生成用例

  基于属性的测试会产生大量的、随机的参数,特别适合为单元测试和接口测试生成测试用例
  尽管早在2006年haskell语言就有了QuickCheck  来进行"基于属性的测试",但是目前来看这依然是一个比较小众的领域,参考资料有限,本文如有不足,欢迎指正。1. 基于表的测试
  在过去的测试实践中,执行测试时通常需要明确的内容(Value):条件输入结果
  这些内容可以通过"判定树"或者"判断表"来表示,然后测试的执行过程变成了这样
  "给定输入 X,我们期望 Y"
  可以称为 基于表的测试
  在最初,这给了我们测试的方向,但是缺点也非常明显:
  你要足够多的"X->Y" 才能可能覆盖到隐蔽的bug。
  这里请大家回答几个问题:
  你是否已经为每一个测试编写了足够多的用例,以至于你十分确定真的不需要再增加用例了这么多的用例,你编写的是否开心?是否高效?是否愿意继续坚持?
  如果以上问题的答案不是yes,那么基于属性的测试就是你需要掌握的东西!2. 基于属性的测试
  基于属性的测试和基于表的测试,最大的区别可以这样描述:
  "给定输入 X值,我们期望 Y值"
  vs
  "给定输入 X类,我们期望 Y类"
  于是利用工具生成大量的X类数据,进行测试,并验证结果是否Y类。
  值得注意的是:关注输入的类型,而不是输入的值根据类型自动生成大量的、随机的输入值
  换言之,它在 自动的生成测试用例 ,虽然输入值是随机的,但是值得类型符合规范要求 3. 如何进行基于属性的测试
  在不同的语言中有不同的工具来实现,比如:haskell中的QuickCheck  、java中的quicktheories  python中的hypothesis
  本文以python为例进行演示:
  假设有add函数,接收两个类型整数参数,并返回它们的相加结果def add(a: int, b: int) -> int:     pass
  首先写出一个简单的测试用例def test_add():     assert 3 == add(1, 2)
  正如前面所说,一个这样的用例,根本没信心覆盖全部的场景,例如:参数是0参数是负数参数值特别大其他...
  所以接下来怎么办?
  改为基于属性的测试import hypothesis.strategies as st from hypothesis import given  @given(st.integers(), st.integers()) def test_add(a, b):     c = add(a, b)     print(f"{a=},{b=}, {c=}")     assert isinstance(c, int)     assert c == a + b
  执行结果 a=0,b=0, c=0 a=0,b=0, c=0 a=0,b=0, c=0 a=16926,b=11053, c=27979 a=0,b=0, c=0 a=0,b=0, c=0 a=21010,b=-2732672789497425072, c=-2732672789497404062 a=0,b=0, c=0 a=14554,b=-15956, c=-1402 a=15597,b=0, c=15597 a=15597,b=13, c=15610 a=15597,b=0, c=15597 a=15597,b=15597, c=31194 a=28965,b=-36, c=28929 a=113,b=-36, c=77 a=28929,b=-36, c=28893 a=28929,b=9356, c=38285 a=9356,b=9356, c=18712 a=10278,b=-62, c=10216 a=-62,b=-62, c=-124 a=1625,b=-68244995710046113596363052355575247332, c=-68244995710046113596363052355575245707 a=1625,b=-13143, c=-11518 a=1625,b=1625, c=3250 a=-1940,b=-31868, c=-33808 a=-7,b=1, c=-6 a=-1,b=0, c=-1 a=-1,b=0, c=-1 a=13,b=7245, c=7258 a=13,b=13, c=26 a=-99,b=-18, c=-117 a=-30172,b=66, c=-30106 a=-30172,b=-16940, c=-47112 a=-16940,b=-16940, c=-33880 a=-1233214851,b=-5152, c=-1233220003 a=-5152,b=-5152, c=-10304 a=-16,b=-29706, c=-29722 a=-29706,b=-29706, c=-59412 a=-29706,b=116, c=-29590 a=29696,b=90, c=29786 a=29696,b=29696, c=59392 a=-11446,b=-21185, c=-32631 a=-21185,b=-21185, c=-42370 a=-12,b=16437, c=16425 a=-12,b=16437, c=16425 a=3202,b=53, c=3255 a=3202,b=3202, c=6404 a=-98,b=3, c=-95 a=82691970030325711417874227410289695610,b=1316378701, c=82691970030325711417874227411606074311 a=82691970030325711417874227410289695610,b=82691970030325711417874227410289695610, c=165383940060651422835748454820579391220 a=24100,b=14385, c=38485 a=24100,b=14385, c=38485 a=24100,b=24100, c=48200 a=12293,b=-106, c=12187 a=12293,b=27280, c=39573 a=27280,b=27280, c=54560 a=-18887,b=-5530, c=-24417 a=-18887,b=-18887, c=-37774 a=4738,b=122351151658095310625663643505383743930, c=122351151658095310625663643505383748668 a=-24601163521689169516616964879873921492,b=565838202, c=-24601163521689169516616964879308083290 a=4738,b=122351151658095310625663643281738736058, c=122351151658095310625663643281738740796 a=-96098295006598318424285019062007505,b=25207226, c=-96098295006598318424285019036800279 a=-96098295006598318424285019062007505,b=-1997122225172868107163535967078611096, c=-2093220520179466425587820986140618601 a=-96098295006598318424285019062007505,b=-96098295006598318424285019062007505, c=-192196590013196636848570038124015010 a=-36,b=1190, c=1154 a=-36,b=-4, c=-40 a=-36,b=-36, c=-72 a=2047897602,b=-4641, c=2047892961 a=2047897602,b=2047897602, c=4095795204 a=-1307873608,b=11753, c=-1307861855 a=-1307873608,b=-3308225400997338452, c=-3308225402305212060 a=-1307873608,b=770256249, c=-537617359 a=-1307873608,b=-1307873608, c=-2615747216 a=-4715910568460396013,b=-18622, c=-4715910568460414635 a=16754,b=-6053, c=10701 a=-6053,b=-6053, c=-12106 a=-6053,b=-6053, c=-12106 a=-22264,b=44, c=-22220 a=-22264,b=-22264, c=-44528 a=-86,b=-86, c=-172 a=-86,b=-86, c=-172 a=1794,b=28170, c=29964 a=1794,b=28170, c=29964 a=-93,b=482, c=389 a=-1,b=482, c=481 a=-1,b=-1, c=-2
  由结果可知,工具根据参数是整数这一规范,自动生成、执行了大量的测试用例4. 在接口测试中自动生成用例
  接口测试和函数的单元测试非常相似:输入数据返回数据
  此外接口文档作为前后端、甚至测试开发的对接窗口,对参数的要求约定的更加细致,
  以OpenAPI为例,每个参数可以有以下属性:type:数字还是字符串?format:密码还是电子邮箱?maxLength:长度不超过多少?required:是否必填?in:参数通过什么传递?其他...
  于是为接口生成符合要求的参数就变得可行了,举个例子:import logging import unittest  import requests  from api_tools import APITestCase    class UserCase(APITestCase):     schema = "http://127.0.0.1:7600/openapi.json"  if __name__ == "__main__":     unittest.main()
  这是以unittest为例进行封装的结果,只需要在TestCase中指定openapi的内容(或路径),
  启动测试框架时,会自动读取、解析接口文档,并生成测试用例
  下面是部分执行日志,可以看到对接口发送了随机参数,并获得返回值INFO     2022-04-10 01:02:59,223 : 执行用例 login_login_access_token_post INFO     2022-04-10 01:02:59,223 : -----调用接口:login_login_access_token_post----- INFO     2022-04-10 01:02:59,223 : 发送请求>>>   :请求数据 = {"userin": {"password": "bEYtwDZUxdBVThEFOqTz", "email": "KEfQnAtTNtwZOXRjoIjp"}} INFO     2022-04-10 01:02:59,578 : 接收响应   <<<:  INFO     2022-04-10 01:02:59,578 : -----调用完毕:login_login_access_token_post----- INFO     2022-04-10 01:02:59,578 : 执行用例 test_token_login_test_token_post INFO     2022-04-10 01:02:59,578 : -----调用接口:test_token_login_test_token_post----- INFO     2022-04-10 01:02:59,578 : 发送请求>>>   :请求数据 = {} INFO     2022-04-10 01:03:00,035 : 接收响应   <<<:  INFO     2022-04-10 01:03:00,035 : -----调用完毕:test_token_login_test_token_post----- INFO     2022-04-10 01:03:00,035 : 执行用例 sign_up_login_sign_up_post INFO     2022-04-10 01:03:00,035 : -----调用接口:sign_up_login_sign_up_post----- INFO     2022-04-10 01:03:00,035 : 发送请求>>>   :请求数据 = {"userin": {"password": "GgzYcOwapTwnkkKVTraE", "email": "EJrXlCSNKKjdiVvAOnTM"}} INFO     2022-04-10 01:03:00,657 : 接收响应   <<<:  INFO     2022-04-10 01:03:00,657 : -----调用完毕:sign_up_login_sign_up_post----- INFO     2022-04-10 01:03:00,657 : 执行用例 todo_list_todo_get INFO     2022-04-10 01:03:00,657 : -----调用接口:todo_list_todo_get----- INFO     2022-04-10 01:03:00,657 : 发送请求>>>   :请求数据 = {} INFO     2022-04-10 01:03:01,233 : 接收响应   <<<:  INFO     2022-04-10 01:03:01,233 : -----调用完毕:todo_list_todo_get----- INFO     2022-04-10 01:03:01,233 : 执行用例 todo_post_todo_post INFO     2022-04-10 01:03:01,233 : -----调用接口:todo_post_todo_post----- INFO     2022-04-10 01:03:01,233 : 发送请求>>>   :请求数据 = {"todoin": {"title": "", "is_done": False}} INFO     2022-04-10 01:03:01,594 : 接收响应   <<<:  INFO     2022-04-10 01:03:01,594 : -----调用完毕:todo_post_todo_post----- INFO     2022-04-10 01:03:01,594 : 执行用例 todo_delete_all_todo_delete INFO     2022-04-10 01:03:01,594 : 执行用例 todo_get_todo__todo_id__get INFO     2022-04-10 01:03:01,594 : -----调用接口:todo_get_todo__todo_id__get----- INFO     2022-04-10 01:03:01,594 : 发送请求>>>   :请求数据 = {"todo_id": 2451} INFO     2022-04-10 01:03:02,026 : 接收响应   <<<:  INFO     2022-04-10 01:03:02,026 : -----调用完毕:todo_get_todo__todo_id__get----- INFO     2022-04-10 01:03:02,026 : 执行用例 todo_put_todo__todo_id__put INFO     2022-04-10 01:03:02,026 : -----调用接口:todo_put_todo__todo_id__put----- INFO     2022-04-10 01:03:02,026 : 发送请求>>>   :请求数据 = {"todo_id": 1519, "todoin": {"title": "", "is_done": False}} INFO     2022-04-10 01:03:02,423 : 接收响应   <<<:  INFO     2022-04-10 01:03:02,423 : -----调用完毕:todo_put_todo__todo_id__put----- INFO     2022-04-10 01:03:02,423 : 执行用例
  文章来自https://www.cnblogs.com/dongfangtianyu/p/api_test_by_pbt.html

为拿下华为国际化首胜,任正非致电李嘉诚香港业务得仰仗您上世纪90年代,爱立信西门子阿尔卡特等公司是当时全球电信市场的霸主,而那个时候的华为连与他们同台竞技的机会都没有。随着国内交换机市场的逐步饱和,华为亟需一个向全球电信运营商证明自己华为卖车2天破3000辆!速度远超同行,任正非再露野心?华为跨界卖电动车,效果怎么样呢?根据赛力斯华为智选SF5车型两天的订单来看,华为卖车效果惊艳各界,让人深感震惊和期待!为什么呢?根据赛力斯华为智选的数据看,两天销售已突破3000辆红米K50曝光!外观设计没有期待,别处却有大升级随着时间的推移,大家可能对智能手机的新形态抱有更多的期待。去年中兴就推出了以真全面屏为主要卖点的中兴A20,虽然实际效果并不如人意,但是明显催生了用户对全面屏设计的渴望,每每有新机亿纬锂能下一个宁德时代概述公司主营业务锂电池作为新能源重要部品,正在深刻改变人类的生产和生活方式。锂电池行业处于快速发展的战略机遇期。公司的主要业务是消费电池,包括锂原电池小型锂离子电池三元圆柱电池和动美国华人教授故意向Linux提交200个安全漏洞!结果整所大学被封杀最近,Linux操作系统(从手机到主要系统server,到处都在用的操作系统)惊现的200个bug(恶意代码),让美国码农圈炸了。开发和维护Linux操作系统的技术大神GregKr思博伦与旭创科技(InnoLight)成功演示800G以太网互操作性2021年4月19日思博伦通信(伦敦证交所上市代码SPT)与旭创科技(苏州)今天宣布,两家公司成功实现了对800G光收发器的互操作性验证。此次成功验证互操作性,对于下一代高速以太网终于轮到丰田出手!bZ4X概念车全球首发早在几年前就已经出现了一波新势力品牌,到了今年,新的电动车品牌和车型更是如雨露春笋般推出。在上海车展上,电车的展位占了一大半,都是主角,似乎没出电动车就跟不上其他品牌的步伐,就连传重磅!清华大学成立芯片学院,为国家培养芯片人才众所周知,中国一直是全球芯片消耗大国,差不多全球三分之一的芯片都被中国用掉了,按照海关的数据,过去三年,国内进口芯片金额超过3000亿美元。为何进口这么多?一方面是因为中国是全球制学者百度AI车惊艳,让人担心日本起步晚恐是一场灾难现代经营4月25日刊登立教大学商学院田中道昭教授的文章,分析介绍百度无人驾驶车在日本的情况,感叹日本起步晚恐会酿成一场灾难。指出事实是,无人驾驶出租车已经在中国到处跑了!日本需要觉iPhone12紫色版开启预售了5499元起苹果推出了紫色版iPhone12和iPhone12mini,如今国行版已经开启预售了。预售已于4月23日开始,发货时间为4月30日。目前苹果官网京东均可预约,京东更是直接提供了80华为上架nova8Pro4G版,仍搭载麒麟985芯片继前段时间Mate40Pro上架4G版之后,华为官网近日又上架了nova8Pro的4G版,它同样搭载麒麟985芯片,除了不支持5G外,其余几乎与5G版完全一致。价格与开售日期暂未公
请问公司发手机华为和苹果13选哪个?如果你就是想单纯地换钱的话,直接去查查相关产品的出售价格就行了,如果你是想自己用的话,首先要考虑的是系统差异,一个是鸿蒙系统,另外一个是iOS系统,如果你之前是用的安卓或者鸿蒙系统如何给自己的苹果手机布置一个高格调的桌面?一90童鞋会这样布置桌面大部分整理桌面的童鞋会把App都摆到各种文件夹里面,但就是死板了点,文件夹一多就也是很容易找不到想找的App。那有没有想过以下几个更高效的排列方法呢?二按字华为p9现在值得买吗?用p9看到这个提问觉得不回复一下说不过去。2016年7月份购买,332版本,去年换了一块电池,摔了N次,我都怀疑为什么每次屏幕都摔不烂。两年半的机器,现在是有点慢了,但还可以忍受,你有没有用手机拍摄的美景照片?这是去年大山里旅游时拍的照片,别至的乡村古镇,山青水秀,古朴典雅。平日只要有机会就喜欢用手机拍一些好看的花花草草,虽然不懂多少拍摄技巧,但拍出来自己看看还是蛮开心的。下面发几张和大连续上了22天班后旷工3天被驱走,一分拿不到,怎么办?回去起码要请假,你回了就缺一个工位,会影响其它工效的。如果说了老板派人补上就不会造成损失的!无故旷工本身就是自己的不对,但是被辞退不给工资对方也有错。个人建议就是去劳动局申请仲裁!比特币在中国能够合法使用交易吗?为了提醒广大网友,比特币的风险,也来谈几点一我国是明确不承认比特币的。不仅取缔了虚拟币交易所,不允许作为货币流通。也就是说,用比特币替代人民币在境内交易,是违法的。虽然基于物权未明甲骨文旗下的oraclemysql数据库以及java等产品,中国有成熟的替代品吗?完全有替代品曾经一家独大的OracleoracleMySQLjava这三个名词联系到一起,还是不得不提到一个全球大型数据库软件公司甲骨文(Oracle),而提到甲骨文又不提到的创始教程微信更新的这两个实用功能真的很棒前两天微信更新了,迎来了两个新的小功能,个人觉得还蛮实用的,一起来看看哦首先,我们把微信更新到最新版本第一个新增加的功能叫做折叠群聊的功能这是什么意思呢?我们先找一个设置过消息免打笔记本与平板二合一一台机器享受两种功能前段时间想要买个平板来娱乐,但是平时工作有一部分内容又需要电脑才能完成,想要两个都买,但是预算又不够,于是就萌生了买一个平板笔记本二合一电脑的想法,在网上挑来挑去最终发现了微软的这北京日报评论最大审慎是互联网时代应有的技术伦理近日,个别网民为弄清一张照片中的男主身份,兀自使用人脸搜索技术,结果张冠李戴,引发了一场基于不实揣测的舆论风波。目前,当事人已就种种传言向警方报案。毫无疑问,这又是一起造谣传谣导致武汉买房,哪些板块可以买,哪些板块千万别碰?有多少钱办多大事,没有什么能投不能投的地方。最能投的二环内新盘准新盘,学区不用太好,因为一般都不差。然后三环内武昌这边明显比汉口汉阳都热,因为大武昌有个光谷,大汉口的临空港还没起来