class Method: def __init__(self): self.operationJson = OperationJson() self.excel = OperationExcel() def post(self, row, data, **kwargs): try: r = requests.post( url=self.excel.getUrl(row=row), data=data, # headers=getHeadersValue(), timeout=6) return r except Exception as e: raise RuntimeError('接口请求发生未知的错误') def get(self, row, params=None, **kwargs): try: r = requests.get( url=self.excel.getUrl(row=row), params=params, # headers=getHeadersValue(), timeout=6) return r except Exception as e: raise RuntimeError('接口请求发生未知的错误')
class Method: def __init__(self): self.excel=OperationExcel() self.operationJson=OperationJson() def post(self,row): """参数data不存在变量""" try: r=requests.post(url=self.excel.get_Url(row=row), data=self.operationJson.get_json_data(row=row), headers=getHeadersValue()) return r except Exception as e: raise RuntimeError('接口请求发生异常') pass def post1(self,row,data): """参数data中存在变量""" try: r=requests.post(url=self.excel.get_Url(row=row), data=data, headers=getHeadersValue()) return r except Exception as e: raise RuntimeError('接口请求发生异常')
class LaGou(unittest.TestCase): def setUp(self): self.obj=Method() self.p=IsContent() self.execl=OperationExcel() self.operationJson=OperationJson() def statusCode(self,r): self.assertEqual(r.status_code, 200) self.assertEqual(r.json()['code'], 0) def isContent(self,r,row): self.statusCode(r=r) self.assertTrue(self.p.isContent(row=row,str2=r.text)) def test_laGou_001(self): '''拉钩:测试翻页''' r = self.obj.post(row=1,data=self.operationJson.getRequestsData(1)) self.isContent(r=r,row=1) self.execl.writeResult(1,'pass') def test_laGou_002(self): '''拉钩:测试关键字的职位搜索''' r =self.obj.post(row=1,data=setSo('Python开发工程师')) list1=[] for i in range(0,15): positionId=r.json()['content']['positionResult']['result'][i]['positionId'] list1.append(positionId) writePositionId(json.dumps(list1)) def test_lgGou_003(self): '''访问搜索到的每个职位的详情页信息''' for i in range(15): r=self.obj.get(url=getUrl()[i]) self.assertTrue(self.p.isContent(34,r.text))
class OperationJson: def __init__(self): self.excel = OperationExcel() def getReadJson(self): with open(data_dir(fileName='requestData.json'), encoding='utf-8') as fp: data = json.load(fp) return data def getRequestsData(self, row): '''获取请求参数''' return json.dumps( self.getReadJson()[self.excel.get_request_data(row=row)]) def getReadJson2(self): with open(data_dir(fileName='requestData2.json'), encoding='utf-8') as fp: data = json.load(fp) return data def getRequestsData2(self, row): '''获取请求参数''' return json.dumps( self.getReadJson2()[self.excel.get_request_data(row=row)])
def setUp(self): self.methon = WebMethon() self.config = Config() self.excel = OperationExcel() self.pm = PublicMethod() self.operationJson = OperationJson() self.iscontent = IsContent()
class Method: def __init__(self): self.operationJson = OperationJson() self.excel = OperationExcel() def post(self, row, data, header): try: r = requests.post(url=self.excel.getUrl(row=row), headers=get_headers(header), data=data, timeout=6) return r except Exception as e: raise RuntimeError("接口请求发生未知的错误") def get(self, row, params): r = requests.get(url=self.excel.getUrl(row=row), params=params, timeout=6) return r def isContent(self, row, str2): flag = None if self.excel.getExpect(row=row) in str2: flag = True else: flag = False return flag
class LaGou(unittest.TestCase): def setUp(self): self.obj = Method() self.p = IsContent() self.execl = OperationExcel() self.operationJson = OperationJson() def statusCode(self, r): # self.assertEqual(r.status_code, 200) print(r.json()['code']) self.assertEqual(r.json()['code'], '1001') def isContent(self, r, row): self.statusCode(r=r) self.assertTrue(self.p.isContent(row=row, str2=r.text)) def test_laGou_001(self): "sign为空" r = self.obj.post(row=1, data=set_so_keyword(userPhone="18821768014")) print("test_laGou_004 is:", r.text) self.isContent(r=r, row=1) self.execl.writeResult(1, 'pass') # print (set_so_keyword(app_id=20180829170725138653,sign='8C7DF610ECB03AEA0DA6AA64F6D8C572'))p_id=20180829170725138653,sign='8C7DF610ECB03AEA0DA6AA64F6D8C572'))
def setup_class(self): print('类前面,我爱你') self.obj = Method() self.p = IsContent() self.execl = OperationExcel() self.operationJson = OperationJson() self.log = Log()
class Method: def __init__(self): self.operationJson=OperationJson() self.excel=OperationExcel() def post(self,row,data,**kwargs): self.uri = url try: r=requests.post( # 测试环境 # url="http://192.168.3.15:83" + self.excel.getUrl(row=row), #预发环境 url=self.uri+self.excel.getUrl(row=row), data=data, headers=getHeadersValue(), verify=False, timeout=6) return r except Exception as e: raise RuntimeError('接口请求发生未知的错误') def get(self,row,params=None,**kwargs): try: r=requests.get( url="http://192.168.3.15:83"+self.excel.getUrl(row=row), params=params, # headers=getHeadersValue(), timeout=6) return r except Exception as e: raise RuntimeError('接口请求发生未知的错误')
def __init__(self): self.operationJson =OperationJson() self.excel = OperationExcel() self.excel_pre = OperationExcel_two() self.db=database() self.header_test = { "Host": "10.168.95.149:8022", "Content-Type": "application/json;charset=UTF-8", "Content-Length": "228", }
class IsContent: def __init__(self): self.excel=OperationExcel() def isContent(self,row,str2): flag=None if self.excel.getExpect(row=row) in str2: flag=True else: flag=False return flag print("https://api.hzxsoft.com"+self.excel.getUrl(row=1))
class LaGou(unittest.TestCase): def setUp(self): self.obj=Method() self.p=IsContent() self.excel=OperationExcel() self.json=OperationJson() def statusCode(self,r): self.assertEqual(r.status_code,200) self.assertEqual(r.json()['code'],0) def isContent(self,r,row): self.statusCode(r) # 注意要给statusCode传数据 self.assertTrue(self.p.isContent(row=row,str2=r.text)) def test_laGou_001(self): '''拉勾:测试翻页,第一页''' r=self.obj.post(row=1,data=self.json.getRequestData(row=1)) #obj这种写法的原理是什么,见setup方法 print(r.text) self.isContent(r=r,row=1) #为什么不是写成self.p.isContent(r=r,row=1)??? self.excel.writeResult(1,'pass') def test_laGou_002(self,row=2): '''拉勾:测试翻页,第二页''' r=self.obj.post(2) #obj这种写法的原理是什么,见setup方法 self.isContent(r=r,row=row) self.excel.writeResult(2,'pass') #如果上面的断言失败了,pass就不会被写进文件中了 def test_laGou_003(self, row=3): '''拉勾:测试翻页,传入不同类型的搜索关键字,替换json中的数据进行测试''' r = self.obj.post(row=3,data=setSo('性能测试工程师')) print(r.text) list1=[] for i in range(0,15): # 0< <16 positionId=r.json()['content']['positionResult']['result'][i]['positionId'] list1.append(positionId) writePositionId(json.dumps(list1)) print(list1) # self.isContent(r=r, row=row) def test_laGou_004(self, row=4): '''拉勾:访问搜索‘性能测试工程师’查看每个职位的详情信息''' for item in getPositionId(): r=self.obj.get(url=getUrl(positionId=item)) # print(r.url) print(r.text) #因为返回的详情页面是html的,所以没有响应状态码,只需要断言数据就行 self.assertTrue(self.p.isContent(row=4,str2=r.text)) #要么写成(row=4,str2=r.text),要么写成(4,r.text),否则报错
class IsContent: def __init__(self): self.excel=OperationExcel() self.log=MyLog() def isContent(self,row,str2): flag=None if self.excel.getExpect(row=row) in str2: flag=True self.log.infoLog('%s接口通过预期结果断言成功'%self.excel.getCaseID(row)) else: flag=False self.log.errorLog('%s接口通过预期结果断言失败'%self.excel.getCaseID(row)) return flag
class XSZC(unittest.TestCase): def setUp(self): self.obj = Method() self.excel = OperationExcel() self.operationJson = OperationJson() def statusCode(self, r): self.assertEqual(r.status_code, 200) self.assertEqual(r.json()['code'], 200) def isContent(self, r, row): self.statusCode(r=r) self.assertTrue(self.obj.isContent(row=row, str2=r.text)) def test_017(self): u"新增促销政策" r = self.obj.post(row=17, data=self.operationJson.getRequestsData(row=17)) self.isContent(r=r, row=17) self.excel.writeResult(17, 'pass') def test_018(self): u"新增销售价格" data = self.operationJson.getRequestsData(row=18) r = self.obj.post(row=18, data=data) self.isContent(r=r, row=18) self.excel.writeResult(18, 'pass') def test_019(self): u"新增销售订单" data = self.operationJson.getRequestsData(row=19) r = self.obj.post(row=19, data=data) self.isContent(r=r, row=19) self.excel.writeResult(19, 'pass') def test_020(self): u"新增销售出库单(直接新增商品)" data = self.operationJson.getRequestsData(row=20) r = self.obj.post(row=20, data=data) self.isContent(r=r, row=20) self.excel.writeResult(20, 'pass') def test_021(self): u"新增销售退货" data = self.operationJson.getRequestsData(row=21) r = self.obj.post(row=21, data=data) self.isContent(r=r, row=21) self.excel.writeResult(21, 'pass')
class Testlagou: excel = OperationExcel() req = Requests() def test_listLaGou(self, first=True, pn=None, kd=None): data = self.excel.getDataValue(row=4) header = self.excel.getHeaderss(row=4) data['first'] = first data['pn'] = pn data['kd'] = kd r = self.req.request(url=self.excel.getUrl(row=4), method=self.excel.getMethod(row=4), headers=self.excel.getHeaderss(row=4), params=data) return r # print(header) def test_list_0001(self): '''测试kd为空''' response = self.test_listLaGou(pn=2) # assert response.json() != {} def test_list_0002(self): '''测试超过页数查询''' response = self.test_listLaGou(pn=65) # assert response.json() == {} print(response.json())
class OperationJson: def __init__(self): self.excel = OperationExcel() #继承OperationExcel类的方法,这里是是对类的实例化处理 def getReadJson(self): # 读取json文件 # 读取过程中遇到json.decoder.JSONDecodeError,需要将json文件中的False改为"false" with open(data_dir('data', 'requestData.json'), 'r', encoding='utf-8') as f: # print(type(json.load(f))) #多了这行代码会出错,数据类型为字典 return json.load(f) def getRequestData(self, row): ''' 取请求参数 json.dumps()将字典处理为json ''' return json.dumps(self.getReadJson()[self.excel.get_request_data(row)]) # opera=OperationJson() # print(opera.getRequestData(1)) # a='\u81ea\u52a8\u5316\u6d4b\u8bd5' # print(type(a)) # print(str(a)) # print(type(a)) # print(bytes(a,encoding='gb2312')) # print(type(a))
class TestDangdang: excel = OperationExcel() obj = Requests() mysql = mysqlUtils() def test_dangdang_0001(self): r = self.obj.request(url=self.excel.getUrl(row=1), method=self.excel.getMethod(row=1), json=self.excel.getDataValue(row=1)) return r.text # assert "您好,欢迎光临乐科二手图书网" in json.dumps(r.text,ensure_ascii=False) # assert r.status_code == 200 #断言状态码 def test_dangdang_0002(self): param = self.excel.getDataValue(row=2) r = self.obj.request(url=self.excel.getUrl(row=2), method=self.excel.getMethod(row=2), headers=self.excel.getHeaderss(row=2), params=param) # bookName = self.mysql.readSql(mysql="select * from d_product where id=%s",params=param) # assert r. def test_lagou_0003(self): r = self.obj.request(url=self.excel.getUrl(row=3), method=self.excel.getMethod(row=3), params=self.excel.getDataValue(row=3)) print(r.cookies)
class Testyunket: req = Requests() excel = OperationExcel() global header header = { 'Cookie': 'EDUWEBDEVICE=eb652b120b914846b23c63beb06c277b; EDU-YKT-MODULE_GLOBAL_PRIVACY_DIALOG=true; 1140087299=1140087299; OUTFOX_SEARCH_USER_ID_NCOO=249788378.68942502; UM_distinctid=17810f1747c959-08e92f47030c8c-53e356a-e1000-17810f1747da09; eds_utm=eyJjIjoiIiwiY3QiOiIiLCJpIjoiIiwibSI6IiIsInMiOiIiLCJ0IjoiIn0=|aHR0cHM6Ly93d3cuYmFpZHUuY29tL2xpbms/dXJsPVR4enQ0NmhqY3JwdEpmTUhhUXVJZkdfaC1sSjlvSFFWSUk4OWF1VFotNTMmd2Q9JmVxaWQ9YmIwODBiNmMwMDBmOGVhNzAwMDAwMDA1NjA0ZmViNDc=; __utmz=129633230.1615850317.54.6.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmc=129633230; hasVolume=true; _ntes_nnid=71d171bc2f56de60a5827b954bb84ede,1616046781328; _ntes_nuid=71d171bc2f56de60a5827b954bb84ede; mail_psc_fingerprint=cc3af4f76d860b369db5e0c817a013c9; sideBarPost=1264; videoResolutionType=3; videoVolume=0.75; videoRate=1.25; [email protected]:-1:1; __utma=129633230.358953019.1614867963.1616304865.1616395587.72; hb_MA-BFF5-63705950A31C_source=study.163.com; utm="eyJjIjoiIiwiY3QiOiIiLCJpIjoiIiwibSI6IiIsInMiOiIiLCJ0IjoiIn0=|aHR0cHM6Ly9rZS5zdHVkeS4xNjMuY29tL2NvdXJzZS9kZXRhaWwvMTAwMDc4MTM1P1BkdD15ZGtXZWImaW5Mb2M9d2ViX3NzX3NzcmM="; NTESSTUDYSI=5f57b893e5bf4efd970f60ba47c5a837; YD_SC_SID=1B28EE4C7F26457ABA09653964BDF7B8; NETS_utid=PLrpZOUlFduBQhIwDfKS8gY42U7dHZ8I; NTES_YD_SESS=FKppMFAiyqMdTh7Zl61_vM375uQ8iAPbF.LHJNbrdLNKkrW0kCD17ofnPN7ODsNL6w09kgGT1ODR_RiWg00A25QTeGeIzaVZHdhp5vOURcsaR8zG4pwxFu81rRoxopqUKf0pqwnJnafYlU1bLgIqnGF4F0iqYSItGK7dLyxSgJBS1qxNZLikxhMvXpjySleKu8hdei68daWPXlcwvFL9rxYlHE.dtzIoRFC1ryC55.XiV; NTES_YD_PASSPORT=k61Fbq7T8NGD05pD6Jp6iImr3X30dpgOtbsIygXeYC_U7LHE7Muc9bXpJT9Ru0TdrjEI7GfDcRu3x.XMjH3nGHAs_jJT0fLK65X5hjjtGZL6J8uWscDHV5D4FLArBu1y_dHbzxP.FueHZGD_X08gBUXMBXdAYau2my8OiOL72CIzQ8gCiihDs.z8MEHgfZfneJzaCRBbD2BUsiS5AfMUZam2z; S_INFO=1616395991|0|3&80##|13136166390; P_INFO=13136166390|1616395991|1|study|00&99|zhj&1615944585&study_client#zhj&330100#10#0#0|&0|null|13136166390; STUDY_INFO="[email protected]|8|1140087299|1616395991533"; STUDY_SESS="4lkUrV0rYQVkxP9TTAmtfR+osO3Q8sbuRISN7SjBO/T8OE5DU0SfMShyeZrB/dL5F1RaXEkOxmcSgbELZrqgeJkGKHYKN/z+Oh6H1wOxdiIB3NV+fRXRmH/WofdLjD7h4oJY+QrYmk3vnbSTDlLrRNZ/NiyCQaEopUqZDZ2gxCkLhur2Nm2wEb9HcEikV+3FTI8+lZKyHhiycNQo+g+/oA=="; STUDY_PERSIST="ds+yImgh5IpYpKxjPosiztPHxI1+N8tbqUONgMbLOoUsD3BBJXto75LdDkyiUJuV9EgMdSmdzomgVhGH6xTtKY1QayMWVQGifwrtWjYqZ9FsVwMHwtOnRDKFheN1TkcYRjyYDNEf0Dhr6F05Je6ySL/lLvgp7Lwd68Chfp2NLWRUySU1z8tua5AIWXI3WQ2K+34u5LQy3CEFkgM6BUwlp12V/BfAUihs+RTZV3Qq4l3ZgpjCC7Iso4RP9U87vJE8LtaQzUT1ovP2MqtW5+L3Hw+PvH8+tZRDonbf7gEH7JU="; DICT_SESS=v2|GA73zVulEBeZhfgz0HQuRl50fPKhfe406LhHOGO4PFRqZOfgyRLqy0QLhM6z64pz0Of6Mgz0LQy0kfOMJK0HpL0YGOLkm64eFR; DICT_LOGIN=1||1616395991585; NETEASE_WDA_UID=1140087299#|#1525503558748; NTES_STUDY_YUNXIN_ACCID=s-1140087299; NTES_STUDY_YUNXIN_TOKEN=0795677da5435c59a6da72305346c45e; STUDY_UUID=ff1c373b-c6a1-4bfb-b742-20a6a6749454; __utmb=129633230.31.8.1616396146409', 'content-type': 'application/json', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36' } # @pytest.fixture() def test_yunket_0001(self): '''模糊查询,根据字符串”python''' cookiess = getHeaders.readheader()['yunCookie'] response = self.req.request( url=getHeaders.getYunUrl(uri="/j/search/suggestions/courses.json"), method="post", # headers=header, headers=getHeaders.getJsonHeader(cookiess), params=self.excel.getDataValue(row=5)) assert response.json()['code'] == 0 assert response.json()['result'][0]['productName'] == "Python五项全能班·10班" assert response.status_code == 200 return response.json()
class Method: def __init__(self): self.excel = OperationExcel() self.operationJson = OperationJson() def post(self, row): """参数中不存在data中的变量参数时使用""" try: r = requests.post(url=self.excel.get_Url(row=row), json=self.operationJson.get_json_data(row=row), headers=getHeadersValue()) return r except Exception as e: raise RuntimeError('接口请求发生异常') pass def post1(self, row, data): """参数中存在data中的变量参数时使用""" try: r = requests.post(url=self.excel.get_Url(row=row), json=data, headers=getHeadersValue()) return r except Exception as e: raise RuntimeError('接口请求发生异常') def post2(self, data1): """获取accesstoken使用""" try: r = requests.post(url='https://api.heplat.com/iface2/getToken', json=data1, headers=getHeadersValue()) return r except Exception as e: raise RuntimeError('接口请求发生异常') pass def post3(self, data2): """获取accesstoken使用""" try: r = requests.post(url='https://api.heplat.com/iface2/getSmsCode', json=data2, headers=getHeadersValue()) return r except Exception as e: raise RuntimeError('接口请求发生异常') pass
class LaGou(unittest.TestCase): def setUp(self): self.obj = Method() self.p = IsAssert() self.excel = OperationExcel() self.operationJson = OperationJson() def tearDown(self): pass def statusCode(self, r): self.assertEqual(r.status_code, 200) # self.assertEqual(r.json()['code'], 0) def isContent(self, r, row): self.statusCode(r) self.assertTrue(self.p.isContent(row=row, str2=r.text)) def test_laGou_001(self): r = self.obj.post(row=1, data=self.operationJson.getRequestsData(1)) self.statusCode(r) print(r.text) self.isContent(r=r, row=1) self.excel.writeResult(1, 'pass') # self.assertTrue(self.p.isContent(1, str2=r.text)) def test_laGou_002(self): """测试关键字职位搜索""" r = self.obj.post(row=1, data=setSo('性能测试工程师')) # self.statusCode(r) print(r.text) # self.assertTrue(self.p.isContent(1, str2=r.text)) list1 = [] for i in range(1, 15): positionId = r.json( )['content']['positionResult']['result'][i]['positionId'] list1.append(positionId) writePositionId(json.dumps(list1)) print(list1) def test_laGou_003(self): """访问搜索到的每个职位的详细信息""" for i in range(14): print("item:%s" % (i)) r = self.obj.get(url=getUrl()[i]) self.assertTrue(self.p.isContent(row=2, str2=r.text))
class LaGou(unittest.TestCase): # log = Log() def setUp(self): self.obj = Method() self.p = IsContent() self.execl = OperationExcel() self.operationJson = OperationJson() self.log = Log() def tearDown(self): pass def statusCode(self, r): self.assertEqual(r.status_code, 200) print(r.status_code) # print(r.json()['code']) # self.assertEqual(r.json ()['code'], 200) def isContent(self, r, row): self.statusCode(r=r) self.assertTrue(self.p.isContent(row=row, str2=r.text)) def test_post_001(self): """测试post接口-直接请求""" print("test_laGou_001方法执行") self.log.info("------测试post接口-直接请求:start!---------") # print(check_user(user=jp_user,name=18821768014)) "sign为空" r = self.obj.post(row=1, data=self.operationJson.getRequestsData(row=1)) print("test_laGou_001 is:", r.text) self.log.info("获取请求结果:%s" % r.text) self.isContent(r=r, row=1) self.execl.writeResult(1, 'pass') def test_post_002(self): print("test_laGou_002方法执行") "测试post接口-参数化请求" self.log.info("------测试post接口-参数化请求:start!---------") r = self.obj.post(row=1, data=set_so_keyword1(phone='18821768014')) print("test_laGou_002 is:", r.text) self.isContent(r=r, row=1) self.execl.writeResult(1, 'pass')
class LoginTest(unittest.TestCase): def setUp(self): self.obj=Method() self.p=IsContent() self.execl=OperationExcel() self.operationJson=OperationJson() self.log=MyLog() def isContent(self,r,row): self.assertEqual(r.status_code, 200) self.assertTrue(self.p.isContent(row=row,str2=r.text)) def test_login_01(self): '''正确的账号密码登录''' r = self.obj.post(1,data=setSo()) self.isContent(r,1) self.execl.writeResult(1,'pass') #测试结果写到excel #cookies= requests.utils.dict_from_cookiejar(r.cookies) #把cookies转为字典类型 #提取sessionid并写入文件中 writeDatafile(fileName='sessionid.md',content=r.cookies['juooo_sessionid']) def test_login_02(self): '''正确的账号错误的密码登录''' r=self.obj.post(2,data=setSo(password=1230)) self.isContent(r,2) self.execl.writeResult(2, 'pass') def test_login_03(self): '''错误的账号正确密码登录''' r=self.obj.post(3,data=setSo(username='******')) self.isContent(r,3) self.execl.writeResult(3, 'pass') def test_login_04(self): '''错误的账号错误的密码登录''' r=self.obj.post(4,data=setSo(username='******',password=123)) self.isContent(r,4) self.execl.writeResult(4, 'pass') def test_login_05(self): '''账号密码为空登录''' r=self.obj.post(5,data=setSo(username='',password='')) self.isContent(r,5) self.execl.writeResult(5, 'pass')
class Runner: def __init__(self): self.excel = OperationExcel() def getSuite(self): '''获取要执行的测试套件''' suite = unittest.TestLoader().discover(start_dir=os.path.join( os.path.dirname(os.path.dirname(__file__)), 'tests'), pattern='test_*.py', top_level_dir=None) return suite def send_mail(self, to_user, sub, content): ''' 发送邮件内容 :param to_user:发送邮件的人 :param sub:主题 :param content:邮件内容 ''' global send_mail global send_user send_mail = 'smtp.sina.cn' send_user = '******' message = MIMEText(content, _subtype='plain', _charset='utf-8') message['Subject'] = sub message['From'] = send_user message['To'] = to_user server = smtplib.SMTP() server.connect(send_mail) server.login('*****@*****.**', 'admin123') server.sendmail(send_user, to_user, message.as_string()) server.close() def main_run(self): '''批量执行测试用例''' unittest.TextTestRunner().run(self.getSuite()) content = '通过数:{0} 失败数:{1} 通过率:{2}'.format( self.excel.run_success_result(), self.excel.run_fail_result(), self.excel.run_pass_rate()) print( 'Please wait while the statistics test results are sent in the mail' ) self.send_mail('*****@*****.**', '接口自动化测试报告', content)
class IsAssert: def __init__(self): self.excel = OperationExcel() def isContent(self, row, str2): flag = None if self.excel.getExpect(row=row) in str2: flag = True else: flag = False return flag
class OperationJson: def __init__(self): self.excel=OperationExcel() def getReadJson(self): with open(data_dir(filename="requestData.json"),encoding="utf-8") as fp: data=json.load(fp) return data def getRequestsData(self,row): '''获取请求参数''' return self.getReadJson()[self.excel.get_request_data(row=row)]
class IsContent: def __init__(self): self.excel = OperationExcel() def isContent(self,row,str): flag=None #print(self.excel.getExcept(row=row)) if self.excel.getExcept(row=row) in str: flag=True else: flag=False print(flag) return flag
class LaGou(unittest.TestCase): def setUp(self): self.obj=Method() self.p=IsContent() self.execl=OperationExcel() self.operationJson=OperationJson() def statusCode(self,r): self.assertEqual(r.status_code, 200) self.assertEqual(r.json()['result_code'], 200) def isContent(self,r,row): self.statusCode(r=r) self.assertTrue(self.p.isContent(row=row,str2=r.text)) def test_laGou_001(self): '''测试1''' r = self.obj.post(row=1,data=self.operationJson.getRequestsData(1)) print ("test_laGou_001 is:", r.text) self.isContent(r=r,row=1) self.execl.writeResult(1,'pass')
class Test_Pytest(): log = Log() def setup_class(self): print('类前面,我爱你') self.obj = Method() self.p = IsContent() self.execl = OperationExcel() self.operationJson = OperationJson() self.log = Log() def teardown_class(self): print('类之后') def setup_method(self): print('方法前面') # def teardown_method(self): print('方法后') # def isContent(self,r,row): # # self.statusCode(r=r) # assert self.p.isContent(row=row, str2=r.text) @pytest.mark.usefixtures("del_title") def test_addCategory_001(self): """添加商品分类校验""" print("test_laGou_001方法执行") self.log.info("-------添加商品分类:start!---------") r = self.obj.post(row=1, data=self.operationJson.getRequestsData(row=1)) print("添加商品分类 is:", r.text) self.log.info("获取请求结果:%s" % r.text) # self.isContent(r=r, row=1) self.execl.writeResult(1, 'pass') assert r.status_code == 200 assert str(r.json()["msg"]) == "成功" print("test_addCategory_0000001 is:", r.json()["data"]["id"])
class LaGou(unittest.TestCase): def setUp(self): self.obj = Method() self.p = IsContent() self.execl = OperationExcel() self.operationJson = OperationJson() def statusCode(self, r): # self.assertEqual(r.status_code, 200) self.assertEqual(r.json()['result_code'], 1006) def isContent(self, r, row): self.statusCode(r=r) self.assertTrue(self.p.isContent(row=row, str2=r.text)) def test_laGou_004(self): "sign为空" r = self.obj.post(row=3, data=set_so_keyword(app_id="20180829170725138653")) print("test_laGou_004 is:", r.text) self.isContent(r=r, row=3) self.execl.writeResult(3, 'pass')
class Method: def __init__(self): self.json = OperationJson() #对两个类进行实例化 self.excel = OperationExcel() # # post请求直接读取json中data作为请求数据,使用于参数没有变化的excel用例 # def post(self,row): # try: # r=requests.post(url=self.excel.get_url(row), # data=self.json.getRequestData(row), # headers=getHeaders(), # timeout=6) # return r # except Exception as e: # raise RuntimeError('接口请求发生未知的错误') # post请求中用户可手动修改json中data作为请求数据 def post(self, row, data): try: r = requests.post(url=self.excel.get_url(row), data=data, headers=getHeaders(), timeout=6) return r except Exception as e: raise RuntimeError('接口请求发生未知的错误') # 丢弃的代码,可以用于环境版本测试(不同的环境的headers相差较大的情况下使用) # def post(self,row,data): # try: # r=requests.post(url=self.excel.get_url(row), # data=data, # headers=checkHeaders(row=row, # f1=getHeaders(), # f2=getHeadersInfo()), # timeout=6) # return r # except Exception as e: # raise RuntimeError('接口请求发生未知的错误') # 用户获取职位详情页信息,当然也可以用到其他接口中 def get(self, url, params=None): #有时候有的get请求有params参数,所以可以写上 r = requests.get(url=url, params=params, headers=getHeaders(), timeout=6) return r