天道酬勤,学无止境

接口自动化

如何用tep完成增删改查接口自动化

tep的设计理念是让人人都可以用Python写自动化,本文就来介绍如何用tep完成增删改查接口自动化。环境变量编辑fixtures/fixture_admin.py:"qa": { "domain": "https://qa.com", },修改qa环境的domain。登录因为非登录接口需要从登录接口拿token,放在请求参数中,所以先在fixtures/fixture_admin.py中实现登录,修改url和json:response = request( "post", url=url("/api/users/login"), headers={"Content-Type": "application/json"}, json={ "username": "admin", "password": "123456", } )根据实际响应数据结构,修改response_token赋值:response_token = jmespath.search("token", response.json()) class Clazz: token = response_token jwt_headers = _jwt_headers(response_token) return Clazz参考_jwt_headers()实现自定义headers:def _jwt_headers(token)

2021-05-19 02:58:45    分类:博客    接口自动化

【接口自动化】selenium库也有大用场(获取cookie)

相信有些童鞋在做接口、或者说接口自动化测试的过程中会遇到这样的场景:测试的接口,必须是需要登录后才能发起请求成功的。那么怎么解决呢? 本着团队协作的精神,我们就去让开发同学开个后门,给你个“万能”值,那么你带着这个“万能”值在请求里,就可以畅通无阻了。但是也不是开发都愿意干这样的事儿,而且很多测试童鞋脸皮也薄(O(∩_∩)O哈哈~),脸皮薄不提倡啊。那么就自己的事儿自己来吧。既然是需要登录才可以请求,那我们就登录呗。咋登录呢?selenium库用起来,然后用selenium获取浏览器cookie。下面demo一段登录操作,来登录被测试的系统。from selenium import webdriver driver = webdriver.Chrome() driver.get("http://xxx.xx.com/xxx/login") #打开登录地址 driver.find_element_by_id("username").send_keys("xxx") #输入用户名 driver.find_element_by_id("password").send_keys("xxxx") #输入密码 driver.find_element_by_xpath("//button[.= '登录']").click() #点击登录 cookie = driver.get_cookies()

2021-05-14 06:51:43    分类:博客    接口自动化   selenium

【接口自动化】1.做接口自动化前你需要准备什么?

自动化测试,最近些年可谓是大火。招聘上的要求也好,培训班的广告也罢,比比皆是,足以说明它在业内的火爆程度。虽然说会写自动化测试也不能说明你牛批,但是你不会的话,那么很抱歉,你的上升通道就会变得更窄。一、为什么要去做自动化测试其实自动化测试之所以受到大家的追捧,必然也是有它的道理。说白了,我觉得根本的因素是在于提效。当然了,提效这个是最终理想,但是有些公司的自动化项目落地的并不太好,反而成为了某种“累赘”。在不少的测试群里待过,看到过很多人吐槽自己的领导或者公司xx,突然某天就宣布要开始搞自动化了,然后安排下去。其实很多时候,他们自己并没有搞清楚,项目适不适合做自动化、做怎么的自动化。说白了,就是为了做自动化而做,并不清楚,真正想要的是什么。所以,在做自动化之前,建议搞搞清楚你们要做的自动化项目应该是什么样子的,解决了什么痛点,能提高多少的效率等等。否则,辛辛苦苦做下来的自动化,很容易到后面就变成了废品。二、自动化的类型大家通常会去选择做自动化的类型一般有2种:一种是UI自动化、一种是接口自动化。那UI自动化中,又可以有web系统的自动化、APP的自动化等等。笔者本人曾经开发维护过一套web自动化的服务,说实话,投入回报率不高,所以后来也就逐步放弃了。回想起来,这也算是领导没弄清目的就盲目开展的典型案例了,不过这段开发经历对我来说还是很宝贵的。到后来重点就转移到了接口自动化了

2021-05-14 05:38:48    分类:博客    接口自动化   自动化

【接口自动化】2.快速搭建接口自动化框架

接口自动化框架要搭成什么,里面的内容究竟应该有多少?这个问题没有标准答案,因为这要取决于你的项目,以及你想要用框架来解决什么问题等多种因素。当然了,这里也就不展开讨论了,还是回到接口自动化这个点,来说一说你至少改具备的东西。一、编程语言的选择如果有特殊要求用某种语言的话,你没什么好选。如果没有特殊要求,我个人偏向于使用python语言。笔者之前也曾参与过基于java语言的接口自动化开发跟维护,框架用的是testng,虽然组内大佬已经尽力将框架维护的比较好用,但是用起来始终不如python爽。或许这也是习惯的原因吧,谁叫我是先学python,后学的java呢。我记得当时领导说是为了让测试的开发语言与开发同步,所以就让我们转用java来开发了。但是我还是那句话,如果没有特殊要求,我还是果断拥抱python。这里要再加个题外话,那是不是觉得会用python就足够了?搁以前或许是吧,但是现在肯定不是了。java还是要学的,你看看大多数公司开发用的什么语言,就是java。反正多掌握几个主流的开发语言肯定不会亏。二、单元测试框架的选用既然语言定了,单元测试框架也就好选了。笔者是基于python进行分享,那么就不得不提unittest个pytest了。unittest是python自带的单元测试框架,而pytest则是一个第三方的测试框架。直接给结论,用pytest,优点多多,插件生态丰富

2021-05-14 05:38:45    分类:博客    接口自动化   自动化框架

【接口自动化】3.写接口自动化case要注意的点

可能有人会说,写接口的自动化CASE多简单了,写个参数发送请求完事了,还要注意啥?没错,相比起UI自动化的case,你要去写各种定位器,接口自动化的case写起来确实容易多了。这也是接口自动化的一个优点,开发效率更快。但是写得快,不等于写得好,本章就聊聊接口自动化case的那些事。一、case要易于阅读和维护既然是写自动化case,那也是在写代码,那么,代码的可阅读性就不可以忽视。除了python的代码规范,还要注意case的结构,能让人一目了然。其实跟我们手动用postman测试接口差不多,把每一步的事情写写清楚就好。那测试接口通常有三个步骤:传入请求参数发送请求到接口判断接口返回的结果是否符合预期这样一来,我们在接口的自动化case中也分三步走。def test_query_activity_manual(init_activitiy_manual, del_activity): '''查询可参与的活动-手动开奖''' payload = { "winWay":0 } r = requests.get(activity_url, params=payload, headers=HEADER) result = r.json() assert result["status"] == 0 assert result["data"]["content"][-1]["id"] ==

2021-05-14 05:38:41    分类:博客    接口自动化   case