Python或自动化测试相关
1、mock跟stub测试桩,mock用于测试结果,stub用于提供测试条件
(1)A调用B,E等,要测试方法A,此时方法E还没完成,用stub 模拟方法E的返回值,提供A测试

(2)mock方法:A调用B,使用场景为:A调用B后的测试效果


2、super():调用父类的方法
3、自动化测试中的PO模式:page-object,是指将测试页面当做一个类(对测试脚本的系统封装)
4、JSON跟字典dict 的区别:
(1)python中的数据类型有int ,str,float、list、bool、tuple、dict、set,所以dict是一种数据类型
(2)json是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来表示数据,不同编程语言之间的数据交换采用json传输
(3)json的本质还是字符串,只是采用 key : value的形式来表示的字符串
(4)json的限制:①字符串外边有单引号② json是类字典的形式,里面的键-值对规定必须使用双引号,值如果是数字可以不加双引号;字典无限制
1 import json 2 a = {"a":1,"b":1,"c":True} #a是字典 3 b = '{"a": 1,"b":2,"c":true}' #b是json 4 print(type(a)) 5 <class 'dict'> 6 print(type(b)) 7 <class 'str'> 8 print(json.dumps(a)) # 将字典a 转换为json 9 {"a": 1, "b": 1, "c": true}
5、session、cookie、token的区别:
-
Cookie是由服务端生成,存储在响应头中,返回给客户端,客户端会将cookie存储下来
-
Session是由服务端生成,存储在服务器端的内存、缓存、数据库等地方
-
在客户端发送请求时,user-agent会自动获取本地存储的cookie,将cookie信息存储在请求头中,发送给服务端
-
请求都是由客户端发起的,当服务端生成了session,客户端怎么会知道呢?客户端怎么能对上这个session暗号?
1)、在客户端给服务端发送请求后,服务端会根据请求信息生成session,同时生成一个session_id,通过cookie返回给客户端;
2)、客户端再次向服务端发送请求时,会通过cookie将这个session_id发送给服务端,这样就对上了session的暗号。 -
cookie可以作为管理session的一种方式,当cookie被禁用时,可以通过表单或重写url传送session_id
访问流程:
- 首先,客户端会发送一个http请求到服务器端。
- 服务器端接受客户端请求后,建立一个session,并发送一个http响应到客户端,这个响应头,其中就包含Set-Cookie头部。该头部包含了sessionId。Set-Cookie格式如下,具体请看Cookie详解
Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure] - 在客户端发起的第二次请求,假如服务器给了set-Cookie,浏览器会自动在请求头中添加cookie
- 服务器接收请求,分解cookie,验证信息,核对成功后返回response给客户端
(3)token也类似一个令牌,无状态,用户信息都被加密到token中,服务器收到token后解密就可知道是哪个用户。需要开发者手动添加。
访问流程:
- 用户登录,成功后服务器返回Token给客户端。
- 客户端收到数据后保存在客户端
- 客户端再次访问服务器,将token放入headers中
- 服务器端采用filter过滤器校验。校验成功则返回请求数据,校验失败则返回错误码
6、依赖于登录的接口:
(1)cookie参数可以用session 自动关联(会话对象session比cookies更方便管理请求的cookie信息)
s = request.session()
后面请求用s.get()和s.post()就可以自动关联cookie
s = requests.session()
def get_it_execution(): result = {} loginurl = "https://account.chsi.com.cn/passport/login" h1 = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36", } s.headers.update(h1) r = s.get(loginurl, verify=False) dom = etree.HTML(r.content.decode("utf-8")) try: result["lt"] = dom.xpath('//input[@name="lt"]')[0].get("value") result["execution"] = dom.xpath('//input[@name="execution"]')[0].get("value") print(result) except: print("lt、execution参数获取失败!") return result
(2)登录接口依赖token的, 编写login函数获取token值后返回,需要用到token的函数,先调用login 函数获取
import requests
def login():
url = ".............."
data ={
"username":'use22',
"psw": '999'
}
h={
"user-agent":'ssssssssssssssss'
}
re = requests.post(url=url,data=data,headers = h)
token = re.json()['data']['token']
return token
def get():
url = '22222222222'
h1 = {
'user-agent': '22222',
'token': login()
}
re = requests.post(url=url,headers = h1)
7、代码耦合:一个软件结构内不同模块间互连程度的度量
8、把用类创建出对象的过程称为实例化
9、python中函数跟方法的区别:
(1)函数是写在文件中,方法是写在class中
(2)函数可以带参数,也可以不带参数;方法需要带上self参数(静态方法除外)
(3)方法的调用需要用 对象.方法 调用
10、实例方法、类方法、静态方法区别:
(1)实例方法:定义在类内的普通方法,传入self参数
既可以访问类变量,又可以访问实例变量
(2)类方法:@classmethod
类方法需要使用@classmethod装饰器定义
类方法至少有一个形参,第一个形参用于绑定类,约定写为'cls' 类和该类的实例都可以调用类方法 类方法不能访问此类创建的实例的属性
(3)静态方法:@staticmethod
静态方法需要使用 @staticmethod装饰器定义
静态方法与普通函数定义相同,不需要传入self实例参数和cls参数
静态方法只能凭借该类或类创建的实例调用
静态方法不能访问实例变量(属性)
class Function(object): # 在类定义中定义变量 cls_variable = "class varibale" def __init__(self): # 在构造函数中创建变量 self.__instance_variable = "instance variable" def instance_method(self): print(self.cls_variable) print(self.__instance_variable) print("this is a instance method") @staticmethod def static_method(): print(Function.cls_variable) # print(Function.__instance_variable) 此处会报错,无法访问实例变量 print("this is a static method") @classmethod def class_method(cls): print(cls.cls_variable) # print(cls.__instance_variable) 此处会报错,无法访问实例变量 print("this is a class method") @classmethod def set_class_variable(cls): cls.cls_variable = 'new class variable' def set_instace_varibale(self): self.__instance_variable = 'new instance varibale' # 类实例可以调用类方法和静态方法 function1 = Function() function1.set_class_variable() function1.class_method() function1.instance_method() function1.static_method() function2 = Function() function2.set_instace_varibale() function2.class_method() function2.instance_method() function2.static_method()
浙公网安备 33010602011771号