企业微信接口测试实战

企业微信接口测试实战1

企业微信接口测试实战1  http://home.testing-studio.com/t/topic/5478

企业微信接口测试实战1  课程内容介绍:接口请求组合,针对测试用例封装优化,让测试用例速度快些(并发执行) 3min30s

企业微信接口测试实战1  restful 架构 24min24s

企业微信接口测试实战1  46min10s
	1.加入session会话让请求更灵活,每次都要用token,可以将token塞到session中,维持一段会话,这样我们就不用每次都去获取token 
	2.加代理
	3.加证书认证
		
企业微信接口测试实战1  r.json() 为字典格式 1h01min20s

#restful 架构在这里插入图片描述
#四个动作:GET|POST|PUT|DELETE
在这里插入图片描述
#加入session会话让请求更灵活,每次都要用token,可以将token塞到session中,维持一段会话,这样我们就不用每次都去获取token
在这里插入图片描述企业微信接口测试实战2

企业微信接口测试实战2  requests请求 参数用json来接的时候,是将python字典转换成 json字符串 4min12s
	json.loads()   把json对象转成python字典
	json.dumps()   把python字典转为json

企业微信接口测试实战2  碰到get方法将请求参数放到params中 ,同时其他方法需要调用同类中方法时记得将被调用方法test开头给去掉 25min52s

#碰到get方法将请求参数放到params中 ,同时其他方法需要调用同类中方法时记得将被调用方法test开头给去掉
在这里插入图片描述
企业微信接口测试实战3

1.企业微信接口测试实战3 增删改查时不要每次都重新创建token,希望token可以在各个地方进行复用,理解为单例模式  5min36s
	解决方案;
	1.故意封装为代理,类中作为静态,或者做成与类无关的东西,每次去获取静态类
	2.借助pytest特性,实现单个token获取 
       第二种方案fixture scope="session" session级别,所有的model共用一个fixture。如果scope="model"只作用于当前model  6min53s
       企业微信接口测试实战3  定义fixture,创建新成员用例使用fixture功能获取token值  8min20s

2.企业微信接口测试实战3  整体测试 10min39s
	单个接口组合起来做一个集成测试
		企业微信接口测试实战3 实现举例 29min14s

3.企业微信接口测试实战3  直接参数化,默认department=[1]  这样写参数化会有问题,需要思考14min07s
	21min27s 解释参数只会被初始化一次,不会每次都会去初始化。参数里面进行参数化,数据不能是list

4.企业微信接口测试实战3  参数化,有很多内容时可以进行追加 *args,**kwargs 16min50s

5.企业微信接口测试实战3  举例加上是否存在应对一些异常处理 31min35s
	try: 
	  pass
	except AssertionError as e: 
	  if "xxx" in e.__str__():
		pass 
	#一定要通过str进行提取,因为e不包含异常信息
	
	5.1 新增时先try except,如果发现新增不成功,判断异常信息是否在抛出的异常信息中,如果在的话我们先用正则提取,或者是先查询再删除,我们采用正则方式,re是正则的包,:开头’结尾提取中间的userid,那么表达式为":(.*)’$" $表示结尾  35min55s
		本来只有一个值,我们用[0]取第一个值。如果检测捕捉到异常,那么我们在异常处理时先通过删除接口删掉这条userid信息,然后再通过新增接口进行数据新增 36min49s


6.企业微信接口测试实战3  数据参数化 42min00s
	6.1 列表生成器,结合元组生成的一组数据,注意生成数据后一定要return回去 48min11s
	6.2 该案例,参数化方法生成数据并不是那么严谨,利用列表生成器结合元组做的数据驱动 ,数据调用 48min22s
		6.2.1 列表生成器有个坑,如果数据特别大的话会占爆内存,可以用生成器处理这种情况。生成器生成数据不会塞到内存中,会一条条去读。 
		6.2.2 还有一种是迭代器,用()进行包裹,和列表生成器不同,列表是[]包裹,可以后面进行了解  50min27s

7.企业微信接口测试实战3  加速运行测试,并发,在一个进程中创建多个并发的运行程序  55min42s
	7.1 并发会有时间种子问题,会一次创建相同的多个数据去运行,所以我们需要对数据进行处理。对数据进行拼接 1h00min04s
		("138%08d"%x )%08d表示算上x的值  不足的位数用0补齐8位

1.实现单个token获取
#借助pytest特性,使用fixture,实现单个token获取在这里插入图片描述
1.1#借助pytest特性,使用fixture,实现单个token获取 案例 获取token
在这里插入图片描述
1.2#借助pytest特性,使用fixture,实现单个token获取 案例调用
在这里插入图片描述
2.整体测试,调用token,使用生成的token只调用了一次生成token接口
在这里插入图片描述
3. 直接参数化,默认department=[1] 这样写参数化会有问题,需要思考14min07s
#如果在参数化上面直接写默认参数 如 def test_create(self,token,userid,name,mobile, department = [1]) 会有问题
#参数里面进行参数化,数据不能是list
在这里插入图片描述
4.直接参数化添加多个变量,有很多内容时可以进行追加 args,**kwargs 16min50s在这里插入图片描述
#断言在这里插入图片描述
5.异常处理
5.1新增时先try except,如果发现新增不成功,判断异常信息是否在抛出的异常信息中,如果在的话我们先用正则提取,或者是先查询再删除,我们采用正则方式,re是正则的包,:开头’结尾提取中间的userid,那么表达式为": (.
)’$" $表示结尾 35min55s
本来只有一个值,我们用[0]取第一个值。
在这里插入图片描述
5.2如果检测捕捉到异常,那么我们在异常处理时先通过删除接口删掉这条userid信息,然后再通过新增接口进行数据新增 36min49s
在这里插入图片描述
6.数据参数化
列表生成器,结合元组生成的一组数据,注意生成数据后一定要return回去 48min11s
6.2 该案例,参数化方法生成数据并不是那么严谨,利用列表生成器结合元组做的数据驱动 ,数据调用 48min22s
6.2.1 列表生成器有个坑,如果数据特别大的话会占爆内存,可以用生成器处理这种情况。生成器生成数据不会塞到内存中,会一条条去读。
6.2.2 还有一种是迭代器,用()进行包裹,和列表生成器不同,列表是[]包裹,可以后面进行了解 50min27s
#参数化方法生成数据
在这里插入图片描述
#调用参数化方法
在这里插入图片描述
#6.2.2 还有一种是迭代器,用()进行包裹,和列表生成器不同,列表是[]包裹,可以后面进行了解 50min27s
在这里插入图片描述
7.测试数据优化

加速运行测试,并发,在一个进程中创建多个并发的运行程序  55min42s
	7.1 并发会有时间种子问题,会一次创建相同的多个数据去运行,所以我们需要对数据进行处理。对数据进行拼接 1h00min04s
		("138%08d"%x)        #%08d表示算上x的值  不足的位数用0补齐8位

在这里插入图片描述
企业微信接口测试实战4

1.pytest-xdist 是pytest插件,专门用于解决测试用例的并发 企业微信接口测试实战1min39s
2.每次运行用例不可能都通过命令行方式去运行,此时我们可以创建一个pytest.ini文件,追加参数,这样每次通过pytest运行的时候都会追加上该参数去运行 pytest -n auto  #auto 代表自动运行并发数 ,并发数由物理逻辑、非物理逻辑共同决定n的数量 ,比如你设定n的值为100,但是你的物理上线是10,那么n也为10 3min56s
3.通过pytest-xdist是进程并行。也可以通过创建线程池,放进去运行跑多线程。
selenium grid是分发,不是做并行 17min34s
4.问题原因:(更新方法)先把参数化默认手机号删掉 ,每次都要改默认值,mobile非必填,每次改为相同手机号所以会报错 13min29s
	4.1上面创建方法进行了try except处理。后面调用update方法没有进行判断所以报错 19min47s
5.并行运行测试用例时,@pytest.fixture(scope=“session”) 定义fixture,创建新成员用例使用fixture功能获取token值
会生成n次token,n为实际并行数   21min40s
	5.1保证并发运行时只用了一次token 获取的token加到文件中,加并行锁 24min01s

1.pytest-xdist 介绍

pytest-xdist 是pytest插件,专门用于解决测试用例的并发

在这里插入图片描述
2.每次运行用例不可能都通过命令行方式去运行,此时我们可以创建一个pytest.ini文件,追加参数,这样每次通过pytest运行的时候都会追加上该参数去运行 pytest -n auto #auto表示自动运行并发数
在这里插入图片描述
3.通过pytest-xdist是进程并行。也可以通过创建线程池,放进去运行跑多线程。
selenium grid是分发,不是做并行
在这里插入图片描述
4.课堂案例问题原因:(更新方法)先把参数化默认手机号删掉 ,每次都要改默认值,mobile非必填,每次改为相同手机号所以会报错
在这里插入图片描述在这里插入图片描述
上面创建方法进行了try except处理。后面调用update方法没有进行判断所以报错 19min47s
在这里插入图片描述
5.【并行】运行测试用例时,@pytest.fixture(scope=“session”) 定义fixture,创建新成员用例使用fixture功能获取token值
会生成n次token,n为实际并行数 21min40s
这样生成token有问题,不能每运行用例都要生成多余token
在这里插入图片描述
解决方案:保证并发运行时只用了一次token 获取的token加到文件中,加并行锁
在这里插入图片描述
企业微信接口测试实战5

1.改造1.各个测试用例对象细分到一个page文件中 
 改造2.po模式设计出来,用一个封装的方式做一个分层的设计
 改造3.常见的数据驱动放在yaml文件中

2.pytest -s 运行过程中执行print函数 13min55s 企业微信接口测试实战5 参考链接:https://www.cnblogs.com/sc912/p/11369237.html

3.util工具类实现获取token 17min44s  图片在你之前
	调用:将公用的方法抽离出来,例如获取token的数据放在util包(类似basepage)下面,其他需要调用的页面,先用__init__方法初始化,然后使用self.token进行调用 17min25s

4.报错是因为Wework().get_token()调用不到报错,是因为我们将get_token()放在util包下面了,此时处理有俩种方式,
	方式1: 用util().get_token() 获取token 
	方式2: 用Wework().test_get("userid")去查token 19min03s
	
5.baseapi放一些公共的api方法,发送get方法,发送post方法。
	get底层调用的是request方法,只是第一个参数传递的是get
 	post底层调用的也是request方法,只是第一个参数传递的是post  	23min33s

	直接传递data,data里面包含请求方法、请求参数等。所以我们再调用request方法时需要解字典 24min50s
		baseapi文件直接返回json格式的数据 28min08s
			baseapi文件返回json格式的数据一定要return回去 31min23s
		wework.py文件调用baseapi方法 27min59s

6.baseapi文件直接返回json格式的数据 28min08s
  wework.py文件调用baseapi方法,别忘记传参method字典,数据data里面一定要加入method字典数据的哈 27min59s

7.运行create用例 30min56s

8.改造查询get接口API 33min51s

9.改造update接口 35min56s

10.改造delete接口 36min44s

11.控制台运行update测试用例 37min53s

12.定义类的时候加()是继承括号里面父类方法,不加()是直接继承Object 38min44s

13.控制台运行delete测试用例 43min06s 43min24s

14.解字典案例介绍 48min47s

15.把数据放在配置文件中进行数据驱动,配置文件中定义一种方式,按照这种方式进行解析即可 53min36s

16.通过yaml文件进行数据驱动,yaml文件碰到变量时需要用${变量名}进行替换,如果碰到类似url包含变量替换时记得将格式化f给删掉  55min21s
	如果碰到类似url包含变量替换时记得将格式化f给删掉,同时将self.token替换为token  55min21s

17.API方法调用yaml文件数据改造 56min22s

18.(修改前)修改baseapi文件,baseapi做变量替换 ,将yaml参数化文件进行引用 	56min28s
	18.1 json.dumps()转换成 json格式 baseapi完成变量替换 	58min12s 
	18.2 wework api中则需要再进行修改,不仅是通过baseapi进行变量替换还需要进行赋值 wework api 完成赋值	59min38s
		#为了演示方便,本应有四组数据进行替换,案例只展示了俩组数据替换,请知悉,企业微信接口测试实战6课件会将数据加进去的哈
	18.3 wework API __init__方法完成token赋值 	59min38s

2.pytest -s 运行过程中执行print函数 13min55s 企业微信接口测试实战5
在这里插入图片描述
3.1util工具类实现获取token 17min44s
在这里插入图片描述
3.2调用:将公用的方法抽离出来,例如获取token的数据放在util包(类似basepage)下面,其他需要调用的页面,先用__init__方法初始化,然后使用self.token进行调用 17min25s
在这里插入图片描述
4.1报错是因为Wework().get_token()调用不到报错,是因为我们将get_token()放在util包下面了,此时处理有俩种方式,
方式1: 用util().get_token() 获取token
方式2: 用Wework().test_get(“userid”)去查用户 19min03s
#报错内容:报错是因为Wework().get_token()调用不到报错,是因为我们将get_token()放在util包下面了
在这里插入图片描述
4.2方式2: 用Wework().test_get(“userid”)去查用户 19min03s
#采取方式2 是直接调取get方法查询用户信息
在这里插入图片描述
5.1baseapi放一些公共的api方法,发送get方法,发送post方法。
get底层调用的是request方法,只是第一个参数传递的是get
post底层调用的也是request方法,只是第一个参数传递的是post 23min33s
在这里插入图片描述
5.2直接传递data,data里面包含请求方法、请求参数等。所以我们再调用request方法时需要解字典 24min50s
在这里插入图片描述
5.3wework.py文件调用baseapi方法 27min59s
在这里插入图片描述
#对上面数据优化,并将结果进行返回
在这里插入图片描述

5.4baseapi文件直接返回json格式的数据 28min08s
#5.2基础上优化
在这里插入图片描述5.5baseapi文件返回json格式的数据一定要return回去 31min23s
在这里插入图片描述
6.1baseapi文件直接返回json格式的数据 28min08s
在这里插入图片描述

6.2wework.py文件调用baseapi方法,别忘记传参method字典,数据data里面一定要加入method字典数据的哈 27min59s
在这里插入图片描述
7.运行create用例在这里插入图片描述
8.改造查询get接口API
在这里插入图片描述在这里插入图片描述

9.改造update接口
在这里插入图片描述
10.改造delete接口
在这里插入图片描述
在这里插入图片描述

11.控制台运行update测试用例
在这里插入图片描述
12.定义类的时候加()是继承括号里面父类方法,不加()是直接继承Object
在这里插入图片描述
13.控制台运行delete测试用例

在这里插入图片描述
14.解字典案例介绍
在这里插入图片描述
15.把数据放在配置文件中进行数据驱动,配置文件中定义一种方式,按照这种方式进行解析即可
在这里插入图片描述
16.通过yaml文件进行数据驱动,yaml文件碰到变量时需要用${变量名}进行替换,如果碰到类似url包含变量替换时记得将格式化f给删掉
如果碰到类似url包含变量替换时记得将格式化f给删掉,同时将self.token替换为token
在这里插入图片描述
17.API方法调用yaml文件数据改造
在这里插入图片描述
18.(修改前)修改baseapi文件,baseapi做变量替换 ,将yaml参数化文件进行引用
在这里插入图片描述
18.1 json.dumps()转换成 json格式 baseapi完成变量替换
在这里插入图片描述
18.2 wework api中则需要再进行修改,不仅是通过baseapi进行变量替换还需要进行赋值 wework api 完成赋值
#为了演示方便,本应有四组数据进行替换,案例只展示了俩组数据替换,请知悉,企业微信接口测试实战6课件会将数据加进去的哈
wework API __init__方法完成token赋值
在这里插入图片描述
企业微信接口测试实战6

1.提取data数据时一定要注意提取到使用的yaml文件层级 企业微信接口测试实战6 1min53s

2.create接口department传入时一定要注意,yaml中传入的是字典,那么wework api中也要做相应的修改 4min46s 5min28s

3.params是在 baseapi上进行定义的 7min38s

4.with open写到__init__方法里面 13min03s
	4.1wework API调用__init__ 里面with open方法13min57s

5.1 request有个session,最开始创建一个会话,后面不用每次都创建会话,只需要用第一次会话发送请求就可以了 15min48s
	5.2用session发送请求时未带token也可以发送成功,是因为access_token 对应上了util().get_token() 20min28s
		5.3使用session时一定要注意过期时间,过一段时间session会过期 22min09s

作业贴 ceshiren.com/t/topic/5485

1.提取data数据时一定要注意提取到使用的yaml文件层级
在这里插入图片描述
2.create接口department传入时一定要注意,yaml中传入的是字典,那么wework api中也要做相应的修改
在这里插入图片描述
在这里插入图片描述
3.params是在 baseapi上进行定义的
在这里插入图片描述
4.1 with open写到__init__方法里面
在这里插入图片描述
4.2 wework API调用__init__ 里面with open方法
在这里插入图片描述
5.1request有个session,最开始创建一个会话,后面不用每次都创建会话,只需要用第一次会话发送请求就可以了
在这里插入图片描述
5.2用session发送请求时未带token也可以发送成功,是因为access_token 对应上了util().get_token()
在这里插入图片描述
5.3使用session时一定要注意过期时间,过一段时间session会过期(注意接口文档,找开发确认session过期时间)
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值