def run(): def resolution(string): p = string.split('x') if len(p) != 2: raise argparse.ArgumentTypeError('not a valid resolution') try: p[0] = int(p[0]) p[1] = int(p[1]) except: raise argparse.ArgumentTypeError('not a valid resolution') return tuple(p) parser = argparse.ArgumentParser(description='Yamosg Client') parser.add_argument('-u', '--username', default='foo') parser.add_argument('-p', '--password', default='bar') parser.add_argument('-r', '--resolution', type=resolution, default=(800,600)) parser.add_argument('-c', '--logconfig', default=resources.realpath('client.conf')) parser.add_argument('host', metavar='HOST', nargs='?', default='localhost') parser.add_argument('port', metavar='PORT', nargs='?', type=int, default='1234') args = parser.parse_args() if os.path.exists(args.logconfig): print args.logconfig logging.config.fileConfig(args.logconfig) else: print >> sys.stderr, 'logconfig', args.logconfig, 'not found, logging disabled' log = Log() log.info('Yamosg starting (%s)', pf.system()) pygame.display.init() client = Client(args.resolution, args.host, args.port, args.username, args.password) signal(SIGINT, quit) # create "superglobal" access to the client- and game instances __builtins__['client'] = client __builtins__['game'] = client._game # hack client.run() log.info('Yamosg stopping')
def __init__(self, resolution, host, port, username, password, split="\n"): global network_log self.log = Log('client') network_log = Log('network') # must have at least one handler self.log.logger.addHandler(logging.NullHandler()) network_log.logger.addHandler(logging.NullHandler()) # opengl must be initialized first self.log.info("Initializing display (windowed at %(resolution)s)", dict(resolution='%dx%d'%resolution)) self._screen = pygame.display.set_mode(resolution, OPENGL|DOUBLEBUF) pygame.display.set_caption('yamosg') self.log.debug("OpenGL setup (version=\"%(version)s\", vendor=\"%(vendor)s\")", dict(version=glGetString(GL_VERSION), vendor=glGetString(GL_VENDOR))) setup_opengl() Client.cursor_default = pygame.cursors.arrow Client.cursor_capture = pygame.cursors.diamond self._resolution = Vector2i(resolution) self._username = username self._password = password self._split = split self._running = False self._state = StateManager() self._game = GameWidget(self, self._resolution) self._container = Composite(Vector2i(0,0), self._resolution, children=[self._game]) self._toolbar = Toolbar(self._game) self._window = VBox() self._window.add(self._toolbar, size=LayoutAttachment(Vector2i(1,0), Vector2i(0,25))) self._window.add(self._container) self._state.push(GameState(self._resolution, self._window)) self._network = Network(self, host, port) self._command_store = {} self._command_queue = [] self._command_lock = threading.Lock() self._playerid = None self._players = {} self._capture_position = None self._timer = 0 # resizing must be done after state has been created so the event is propagated proper. self._resize(self._resolution)
class Blog(): log = Log() def login(self): url = 'http://sps.cecook.net/login/ajaxLogin'
def setUpClass(cls) -> None: cls.log = Log() cls.data = memberGroupList().test_data
class Feed(unittest.TestCase): def setUp(self): self.s = requests.session() self.auto_login_token = auto_login_by_UID() #auto_login_by_UID返回的token self.header = { 'User-Agent': 'PelvicFloorPersonal/4.1.1 (iPad; iOS 10.1.1; Scale/2.00)', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-Hans-CN;q=1', 'Content-Type': 'application/json', 'requestApp': '2', 'requestclient': '2', 'versionForApp': '4.1.1', 'Authorization': 'Basic YXBpTGFudGluZ0BtZWRsYW5kZXIuY29tOkFwaVRobWxkTWxkQDIwMTM=', 'Connection': 'keep-alive' } self.log = Log() self.excel = Excel_util( r'C:\Users\Administrator\Desktop\Interface_testcase.xls') def test_collect01(self): u'测试收藏接口' #读取关联参数-用户的动态的id,再循环去收藏,断言结果 self.log.info('开始测试收藏动态接口!') url = get_content('sns_base_url') + '/v1/collect/add' read_feed_ids = self.excel.read_value(12, 6) feed_ids = json.loads(read_feed_ids) #print(type(feed_ids)) #迭代字典的value for x in feed_ids.values(): json_data = {"id": x, "token": self.auto_login_token} r = self.s.post(url, headers=self.header, json=json_data) self.log.info('返回的内容是:%s' % r.json()) self.assertEqual(200, r.json()['code']) self.assertEqual('收藏成功.', r.json()['note']) self.log.info('收藏动态接口测试结束!\n') def test_collect02(self): u'测试取消收藏接口' self.log.info('开始测试取消收藏动态接口!') url = get_content('sns_base_url') + '/v1/collect/delete' read_feed_ids = self.excel.read_value(12, 6) feed_ids = json.loads(read_feed_ids) #print(type(feed_ids)) #迭代字典的value for x in feed_ids.values(): json_data = {"id": x, "token": self.auto_login_token} r = self.s.post(url, headers=self.header, json=json_data) self.log.info('取消收藏返回的内容是:%s' % r.json()) self.assertEqual(200, r.json()['code']) self.assertEqual('取消收藏成功.', r.json()['note']) self.log.info('取消收藏动态接口测试结束!\n') def tearDown(self): self.s.close()
def tests_s(self): #流程测试s合同 u'''即有宝流程测试s合同''' # textval = MysqlUtil().mysql_getstring("SELECT t.con_name FROM (SELECT * FROM mobiletest_mobiledata WHERE con_name LIKE '%s%%' ORDER BY create_time DESC) t LIMIT 1"%con_name) #流程测试s合同 textvall = getyaml(PATH("..\config\yaml\jyb\dim.yaml")).get( 'name') #流程测试s合同 Log().info("名称:%s" % textvall) #流程测试s合同 com = appclass(self.driver, self.cpath) #流程测试s合同 for a in range(54, 67): #流程测试s合同 com.elm_operate(a, "") #流程测试s合同 com.swipeup() #流程测试s合同 com.elm_operate(67, "") #流程测试s合同 time.sleep(4) #流程测试s合同 com.checkItem("单位信息", "基本信息页下一步保存") #流程测试s合同 for b in range(68, 77): #流程测试s合同 com.elm_operate(b, "") #流程测试s合同 com.swipeup() #流程测试s合同 for v in range(77, 82): #流程测试s合同 com.elm_operate(v, "") #流程测试s合同 time.sleep(4) #流程测试s合同 com.checkItem("联系人", "单位信息页下一步保存") #流程测试s合同 #-----Begin----填写联系人信息 --20181015 chenjingxu #流程测试s合同 #填写文本框内容 #流程测试s合同 Log().info("开始填写联系人信息") #流程测试s合同 HF = "未婚" #流程测试s合同 com3 = appclass(self.driver, PATH("..\config\yaml\jyb\jybcase2.yaml")) #流程测试s合同 #填写姓名和手机号 #流程测试s合同 if HF == "已婚": #流程测试s合同 for h in range(0, 7): #流程测试s合同 com3.elm_operate(h, "") #流程测试s合同 else: #流程测试s合同 for h in range(0, 5): #流程测试s合同 com3.elm_operate(h, "") #流程测试s合同 #选择与本人关系 #流程测试s合同 r = 0 #流程测试s合同 for s in range(9, 11): #流程测试s合同 lis = [12, 48] #流程测试s合同 com3.elm_operate(s, "") #流程测试s合同 print("没有点击打开弹窗") #流程测试s合同 time.sleep(0.5) #流程测试s合同 com3.elm_operate(lis[r], "") #流程测试s合同 r = r + 1 #流程测试s合同 #提交 #流程测试s合同 com3.elm_operate(13, "") #流程测试s合同 Log().info("恭喜,填写联系人信息成功!!!") #流程测试s合同 #第一步 填写银行卡号 #流程测试s合同 self.driver.activate_ime_engine( "com.sohu.inputmethod.sogou.xiaomi/.SogouIME") #流程测试s合同 com3.elm_operate(21, "") #流程测试s合同 self.driver.activate_ime_engine( "io.appium.android.ime/.UnicodeIME") #流程测试s合同 com3.elm_operate(52, "") #流程测试s合同 com3.elm_operate(53, "") #流程测试s合同 time.sleep(3) #流程测试s合同 MysqlUtiltwo().mysql_execute( "INSERT INTO credit_bankcard_four (`name`,bank_card,mobile,id_number,check_result,check_msg,sp_code,create_time,service_id,extra) VALUES ('%s','6228481359515816576','13300000000','511000198506020031','2000','全匹配','BAIRONG',NOW(),'10000',NULL)" % textvall) #流程测试s合同 time.sleep(2) #流程测试s合同 com3.elm_operate(55, "") #流程测试s合同 time.sleep(2) #流程测试s合同 send_codee = MysqlUtiltwo().mysql_getstring( "SELECT t.sms_code FROM (SELECT * FROM sms_verify_info WHERE phone = '%s' ORDER BY sent_time DESC) t LIMIT 1" % mobilephone) #流程测试s合同 print(send_codee) #流程测试s合同 time.sleep(10) #流程测试s合同 c = getyaml(PATH("..\config\yaml\jyb\dim.yaml")).get('name') #流程测试s合同 if c.startswith('测试'): #流程测试s合同 com3.elm_operate(54, "123456") #流程测试s合同 else: #流程测试s合同 com3.elm_operate(54, send_codee) #流程测试s合同 com3.elm_operate(15, "") #流程测试s合同 com3.checkItem("其他信息", "绑定银行卡页保存") #流程测试s合同 #------------------------------------断 #流程测试s合同 #进入其他信息页 #流程测试s合同 com3.elm_operate(32, "") #流程测试s合同 com3.elm_operate(33, "") #流程测试s合同 com3.elm_operate(34, "") #流程测试s合同 com3.elm_operate(15, "") #流程测试s合同 time.sleep(1) #流程测试s合同 com3.checkItem("授权", "其他信息页保存") #流程测试s合同 #跳过授权 #流程测试s合同 com3.elm_operate(15, "") #流程测试s合同 com3.checkItem("小问卷", "跳过授权保存") #流程测试s合同 #小问卷 #流程测试s合同 # com3.elm_operate(36, "") #流程测试s合同 com3.elm_operate(37, "") #流程测试s合同 com3.elm_operate(51, "") #流程测试s合同 com3.checkItem("影像证明", "小问卷保存") #流程测试s合同 #上传影像证明 #流程测试s合同 com3.swipedown() #流程测试s合同 com3.elm_operate(38, "") #流程测试s合同 com3.elm_operate(39, "") #流程测试s合同 com3.elm_operate(40, "") #流程测试s合同 time.sleep(2) #流程测试s合同 self.driver.wait_activity( "com.giveu.corder.ordercreate.activity.PhotoCertificateActivity", 20, 1) #流程测试s合同 com3.swipeup() #流程测试s合同 com3.elm_operate(41, "") #提交 #流程测试s合同 com3.elm_operate(42, "") #流程测试s合同 com3.elm_operate(43, "") #流程测试s合同 time.sleep(2) #流程测试s合同 sta = MysqlUtil().mysql_getstring( "SELECT con_status FROM mobiletest_mobiledata WHERE con_name ='%s'" % textvall) #流程测试s合同 if com3.findItem("成功提交") and sta == 'r': #流程测试s合同 Log().info("即有宝S合同生成成功") #流程测试s合同 MysqlUtil().mysql_execute( "UPDATE mobiletest_mobiledata SET con_status='s' WHERE con_name='%s'" % textvall) #流程测试s合同 else: #流程测试s合同 Log().info("即有宝S合同生成失败") #流程测试s合同
class YongHu(unittest.TestCase): log = Log() @classmethod def setUpClass(cls): cls.driver = browser() cls.YH = Yonghu(cls.driver) cls.YH.open(login_url, u'登录') cls.driver.implicitly_wait(5) Global_function.login(cls) cls.YH.assertion_test1() cls.YH.assertion_test2() @classmethod def tearDownClass(cls): cls.driver.quit() def test_YHGL1(self): '''创建用户''' ''' :创建用户 :return: ''' self.log.info('------创建用户:start!---------') data = self.YH.assertion_test3() try: data1 = int(data[11]) + 1 except: Data2 = data[12:14] data2 = int(Data2) + 1 self.YH.assertion_test4(read_Data.getExcel2(testData, 0), read_Data.getExcel2(testData, 0)) data3 = self.YH.assertion_test3() try: data31 = int(data3[11]) self.assertEqual(data1, data31) except: Data3 = int(data3[12:14]) self.assertEqual(Data3, data2) self.log.info('------创建用户:stop!---------') def test_YHGL2(self): '''用户详情''' ''' :用户详情 :return: ''' self.log.info('------查看用户详情:start!---------') self.YH.assertion_test5() self.assertEqual(self.YH.assertion_test6(), read_Data.getExcel2(4, 6)) self.YH.assertion_test10() self.log.info('------查看用户详情:stop!---------') def test_YHGL3(self): '''编辑用户''' ''' :编辑用户 :return: ''' self.log.info('------编辑用户:start!---------') self.YH.assertion_test7(read_Data.getExcel2(testData, 1)) self.assertEqual(self.YH.assertion_test11(), read_Data.getExcel2(testData, 1)) self.log.info('------编辑用户:stop!---------') def test_YHGL4(self): '''重置密码''' ''' :重置密码 :return: ''' self.log.info('------重置密码:start!---------') self.YH.assertion_test8() print(self.YH.assertion_test12()) self.log.info('------重置密码:stop!---------') def test_YHGL5(self): '''冻结用户''' ''' :冻结用户 :return: ''' self.log.info('------冻结用户:start!---------') data = self.YH.assertion_test12() if data == read_Data.getExcel2(6, 6): self.YH.assertion_test9() else: self.YH.assertion_test9() self.YH.assertion_test9() self.assertEqual(self.YH.assertion_test12(), read_Data.getExcel2(5, 6)) self.log.info('------冻结用户:stop!---------') def test_YHGL6(self): '''激活用户''' ''' :激活用户 :return: ''' self.log.info('------激活用户:start!---------') data = self.YH.assertion_test12() if data == read_Data.getExcel2(5, 6): self.YH.assertion_test9() else: self.YH.assertion_test9() self.YH.assertion_test9() self.assertEqual(self.YH.assertion_test12(), read_Data.getExcel2(6, 6)) self.log.info('------激活用户:stop!---------')
class Recommend(unittest.TestCase): def setUp(self): self.s = requests.session() self.auto_login_token = auto_login_by_UID() #auto_login_by_UID返回的token self.header = {'User-Agent': 'PelvicFloorPersonal/4.1.1 (iPad; iOS 10.1.1; Scale/2.00)', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-Hans-CN;q=1', 'Content-Type': 'application/json', 'requestApp': '2', 'requestclient': '2', 'versionForApp': '4.1.1', 'Authorization': 'Basic YXBpTGFudGluZ0BtZWRsYW5kZXIuY29tOkFwaVRobWxkTWxkQDIwMTM=', 'Connection': 'keep-alive' } self.log = Log() self.excel = Excel_util(r'C:\Users\Administrator\Desktop\Interface_testcase.xls') def test_recommend(self): u'推荐内容接口-参数正常' self.log.info('测试推荐内容接口-参数正常') url = get_content('sns_base_url')+'/v1/recommend/content' json_data = { "token":self.auto_login_token, "time":0, "page":1 } r = self.s.post(url,headers = self.header,json=json_data) self.log.info('返回的内容是:%s' % r.json()) con = r.json()['data']['content'] d = {} n = 1 for i in con: d['feed_id_'+str(n)] = i['id'] n += 1 self.excel.write_value(13,6,d) self.assertEqual(200,r.json()['code']) self.assertEqual('请求成功',r.json()['note']) self.assertTrue(r.json()['data']) #判断data不为空 self.log.info('测试推荐内容接口-参数正常情况测试结束!\n') def test_recommend2(self): u'推荐内容接口-无token' self.log.info('测试推荐内容接口-无token') url = get_content('sns_base_url')+'/v1/recommend/content' json_data = { #"token":self.auto_login_token, "time":0, "page":1 } r = self.s.post(url,headers = self.header,json=json_data) self.log.info('返回的内容是:%s' % r.json()) self.assertEqual(200,r.json()['code']) self.assertEqual('请求成功',r.json()['note']) self.assertTrue(r.json()['data']) #判断data不为空 self.log.info('测试推荐内容接口-无token情况测试结束!\n') def test_recommend_user(self): u'推荐用户接口-参数正常' self.log.info('测试推荐用户接口-参数正常') url = get_content('sns_base_url')+'/v1/recommend/user' json_data = { "token":self.auto_login_token, "time":0, "page":1 } r = self.s.post(url,headers = self.header,json=json_data) self.log.info('返回的内容是:%s' % r.json()) self.assertEqual(200,r.json()['code']) self.assertEqual('请求成功',r.json()['note']) self.assertTrue(r.json()['data']) self.log.info('测试推荐用户接口-参数正常情况测试结束!\n') def test_recommend_user2(self): u'推荐用户接口-无token' self.log.info('测试推荐用户接口-无token') url = get_content('sns_base_url')+'/v1/recommend/user' json_data = { #"token":self.auto_login_token, "time":0, "page":1 } r = self.s.post(url,headers = self.header,json=json_data) self.log.info('返回的内容是:%s' % r.json()) self.assertEqual(200,r.json()['code']) self.assertEqual('请求成功',r.json()['note']) self.assertTrue(r.json()['data']) self.log.info('测试推荐用户接口-无token情况测试结束!\n') def tearDown(self): self.s.close()
def setUpClass(cls): cls.drever = webdriver.Chrome() cls.drever.maximize_window() cls.a = Zendao_Login(cls.drever) cls.b = Add_bug(cls.drever) cls.log = Log()
class JiChu4(unittest.TestCase): log = Log() @classmethod def setUpClass(cls): cls.driver = browser() cls.JC = Jichu(cls.driver) cls.JC.open(login_url, u'登录') cls.driver.implicitly_wait(5) Global_function.login(cls) cls.JC.assertion_test1() cls.JC.assertion_test2() cls.JC.assertion_test23() @classmethod def tearDownClass(cls): cls.driver.quit() ''' 库区类别管理 ''' def test_kqlb1(self): '''新增库区类别''' ''' :新增库区类别 :return: ''' self.log.info('------新增库区类别:start!---------') data = self.JC.assertion_test8() try: data1 = int(data[11]) + 1 except: Data2 = data[12:14] data2 = int(Data2) + 1 self.JC.assertion_test24(read_Data.getExcel2(testData, 0), read_Data.getExcel2(testData, 1)) data3 = self.JC.assertion_test8() try: data31 = int(data3[11]) self.assertEqual(data1, data31) except: Data3 = int(data3[12:14]) self.assertEqual(Data3, data2) self.log.info('------新增库区类别:stop!---------') def test_kqlb2(self): '''编辑库区类别''' ''' :编辑库区类别 :return: ''' self.log.info('------编辑库区类别:start!---------') self.JC.assertion_test27(read_Data.getExcel2(testData, 0), read_Data.getExcel2(testData, 1)) #self.assertEqual(self.JC.assertion_test25(), read_Data.getExcel2(testData1, 2)) self.log.info('------编辑库区类别:stop!---------') def test_kqlb3(self): '''禁用库区类别''' ''' :禁用库区类别 :return: ''' self.log.info('------禁用库区类别:start!---------') data = self.JC.assertion_test26() if data == read_Data.getExcel2(12, 6): self.JC.assertion_test28() else: self.JC.assertion_test28() self.JC.assertion_test28() self.assertEqual(self.JC.assertion_test26(), read_Data.getExcel2(11, 6)) self.log.info('------禁用库区类别:stop!---------') def test_kqlb4(self): '''启用库区类别''' ''' :启用库区类别 :return: ''' self.log.info('------启用库区类别:start!---------') data = self.JC.assertion_test26() if data == read_Data.getExcel2(11, 6): self.JC.assertion_test28() else: self.JC.assertion_test28() self.JC.assertion_test28() self.assertEqual(self.JC.assertion_test26(), read_Data.getExcel2(12, 6)) self.log.info('------启用库区类别:stop!---------')
def setUpClass(cls): cls.driver=webdriver.Remote('http://127.0.0.1:%s/wd/hub' % desired_caps[0], desired_caps[1]) cls.base=BaseApp(cls.driver) cls.log=Log()
class JiChu1(unittest.TestCase): log = Log() @classmethod def setUpClass(cls): cls.driver = browser() cls.JC = Jichu(cls.driver) cls.JC.open(login_url, u'登录') cls.driver.implicitly_wait(5) Global_function.login(cls) cls.JC.assertion_test1() cls.JC.assertion_test2() cls.JC.assertion_test10() @classmethod def tearDownClass(cls): cls.driver.quit() ''' 货品类别设置 ''' def test_hp1(self): '''添加货品类别''' ''' :添加货品类别 :return: ''' self.log.info('------添加货品类别:start!---------') data = self.JC.assertion_test8() try: data1 = int(data[11]) + 1 except: Data2 = data[12:14] data2 = int(Data2) + 1 self.JC.assertion_test3(read_Data.getExcel2(testData, 0), read_Data.getExcel2(testData, 1)) data3 = self.JC.assertion_test8() try: data31 = int(data3[11]) self.assertEqual(data1, data31) except: Data3 = int(data3[12:14]) self.assertEqual(Data3, data2) self.log.info('------添加货品类别:stop!---------') def test_hp2(self): '''编辑货品类别''' ''' :编辑货品类别 :return: ''' self.log.info('------编辑货品类别:start!---------') #data=self.JC.assertion_test9() self.JC.assertion_test4(read_Data.getExcel2(testData, 0), read_Data.getExcel2(testData, 1)) # if self.JC.assertion_test9()==data: # print u'货品类别编辑失败' # elif self.JC.assertion_test9()==read_Data.getExcel2(testData1,1): # self.assertEqual(self.JC.assertion_test9(),read_Data.getExcel2(testData1,1)) # else: # self.assertNotEqual(self.JC.assertion_test9(), read_Data.getExcel2(testData1, 1)) # print u'当前位置文本为:%s,预期文本为:%s'%(self.JC.assertion_test9(),read_Data.getExcel2(testData1, 1)) # try: # self.assertIn(read_Data.getExcel2(testData1, 0),self.JC.assertion_test9()) # except: # self.assertIn(read_Data.getExcel2(testData1, 1), self.JC.assertion_test9()) self.log.info('------编辑货品类别:stop!---------') def test_hp3(self): '''禁用货品类别''' ''' :禁用货品类别 :return: ''' self.log.info('------禁用货品类别:start!---------') data = self.JC.assertion_test7() if data == read_Data.getExcel2(6, 6): self.JC.assertion_test5() else: self.JC.assertion_test5() self.JC.assertion_test5() self.assertEqual(self.JC.assertion_test7(), read_Data.getExcel2(11, 6)) self.log.info('------禁用货品类别:stop!---------') def test_hp4(self): '''启用货品类别''' ''' :启用货品类别 :return: ''' self.log.info('------启用货品类别:start!---------') data = self.JC.assertion_test7() if data == read_Data.getExcel2(11, 6): self.JC.assertion_test5() else: self.JC.assertion_test5() self.JC.assertion_test5() self.assertEqual(self.JC.assertion_test7(), read_Data.getExcel2(6, 6)) self.log.info('------启用货品类别:stop!---------')
def tearDownClass(cls): Log().info('正在重置数据库测试数据......') databaseOperations().delete_user('sys_user', 'username')
def setUpClass(cls) -> None: cls.log = Log() cls.data = addAdminUser().test_data
from driver.remoteDriver import RemoteDriver from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By from common.logger import Log from pageobject.basePage import Page from locator.baidu.index import IndexPage from common.handleby import WebHandlerBy from testdata.baidu.index import BaiduIndexInput import sys logger = Log() class BaiduPage(Page): logout_loc = (By.XPATH, '//a[text()="退出"]') def ispresent(self): try: WebDriverWait(self.driver, 20).until( EC.visibility_of_element_located(BaiduPage.logout_loc)) return True except: logger.error('退出按钮没有出现{0}'.format(sys._getframe().f_code.co_name)) return False def inputtext(self): search_input = self.driver.find_element_by_id(IndexPage.search_input) search_input.send_keys(BaiduIndexInput.search_input) def clickbutton(self):
def __init__(self, file_path): self.file_path = file_path self.log = Log()
class JiChu3(unittest.TestCase): log = Log() @classmethod def setUpClass(cls): cls.driver = browser() cls.JC = Jichu(cls.driver) cls.JC.open(login_url, u'登录') cls.driver.implicitly_wait(5) Global_function.login(cls) cls.JC.assertion_test1() cls.JC.assertion_test2() cls.JC.assertion_test17() @classmethod def tearDownClass(cls): cls.driver.quit() ''' SKU设置 ''' def test_SKU1(self): '''新增SKU''' ''' :新增SKU :return: ''' self.log.info('------新增SKU:start!---------') data = self.JC.assertion_test8() try: data1 = int(data[11]) + 1 except: Data2 = data[12:14] data2 = int(Data2) + 1 self.JC.assertion_test18(read_Data.getExcel2(testData, 7), read_Data.getExcel2(testData1, 7), read_Data.getExcel2(testData, 7), '12345', read_Data.getExcel2(testData, 7), read_Data.getExcel2(testData, 0), read_Data.getExcel2(testData, 1)) data3 = self.JC.assertion_test8() try: data31 = int(data3[11]) self.assertEqual(data1, data31) except: Data3 = int(data3[12:14]) self.assertEqual(Data3, data2) self.log.info('------新增SKU:stop!---------') def test_SKU2(self): '''编辑SKU''' ''' :编辑SKU :return: ''' self.log.info('------编辑SKU:start!---------') self.JC.assertion_test21(read_Data.getExcel2(testData1, 0), read_Data.getExcel2(testData1, 1)) #self.assertNotEqual(self.JC.assertion_test19(), read_Data.getExcel2(testData1, 2)) self.log.info('------编辑SKU:stop!---------') def test_SKU3(self): '''禁用SKU''' ''' :禁用SKU :return: ''' self.log.info('------禁用SKU:start!---------') t.sleep(0.5) data = self.JC.assertion_test20() if data == read_Data.getExcel2(12, 6): self.JC.assertion_test22() else: self.JC.assertion_test22() self.JC.assertion_test22() self.assertEqual(self.JC.assertion_test20(), read_Data.getExcel2(11, 6)) self.log.info('------禁用SKU:stop!---------') def test_SKU4(self): '''启用SKU''' ''' :启用SKU :return: ''' self.log.info('------启用SKU:start!---------') data = self.JC.assertion_test20() if data == read_Data.getExcel2(11, 6): self.JC.assertion_test22() else: self.JC.assertion_test22() self.JC.assertion_test22() self.assertEqual(self.JC.assertion_test20(), read_Data.getExcel2(12, 6)) self.log.info('------启用SKU:stop!---------')
class Ts_ibeforagent(unittest.TestCase): log = Log() def setUp(self): self.log.info("---------开始测试---------") # 测试环境地址 # self.url = "http://172.29.50.67:7060/sbe" # 生存环境地址 self.url = "http://113.108.131.149:8060/sbe" @ddt.data(*testDate) def tearDown(self, values): self.log.info(values['testcaseID'] + "---------结束测试---------") # @unittest.skip(u'我很喜欢你,不想执行你') @ddt.data(*testDate) # @ddt.unpack # def test_RT(self,testcaseid,expath,testname,hope): def test_ibeforagent_inf(self, values): u'API接口上线验证' self.intdiscrp = values['testcaseID'] self.log.info(self.intdiscrp + "---------start---------" + values['testcaseID']) # self.url = "http://172.29.50.67:7060/sbe" # self.data = expath # self.caseName=testname self.data = values['except_path'] self.caseName = values['tscase_name'] self.excelPath = os.path.join(self.data, self.caseName) self.f = open(self.excelPath) self.data = self.f.read() # print data self.f.close() # self.payload =json.loads(self.data) self.payload = json.loads(self.data, encoding='GB2312') self.payload["token"] = token # print "tihuan%s"%self.payload # MD5加密拿到skybusAuth self.ttestdMD5 = API_skybusauth() self.md5dd = self.ttestdMD5.skybus_md5(token, self.payload) print "skybusAuth:%s" % self.md5dd self.headers = { "Content-Type": "application/json;charset=utf-8", "skybusAuth": self.md5dd } self.r = requests.post(self.url, json=self.payload, headers=self.headers, allow_redirects=False, verify=False) # 判断返回是否正确,正则表达式去提取"pnrcode":"HT4DKY" # print type(self.r.content) # self.t = re.findall(r'"class":"(.+?)",', self.r.content) # # print "t=%s"%self.t # self.ACTresults = self.t[0] # # print self.t[0] # 期望值 self.log.info(self.intdiscrp + "-接口的返回--" + self.r.content) self.hope = values['hope'] # self.hope =hope if self.hope in self.r.content: a = True self.log.info(self.intdiscrp + "测试结果----" + "pass" + "-----") else: a = False self.log.info(self.intdiscrp + "测试结果-----" + "false" + "-----") # print a self.log.info(self.intdiscrp + "---期待值--" + self.hope) try: self.aa = self.assertTrue(a, msg="预期结果和实际结果不符") except () as e: self.log.info(self.intdiscrp + str(e)) raise self.log.info(self.intdiscrp + "------------end--------------------")
def setUp(self): self.log = Log() self.request = Request()
class Capsummary_update(unittest.TestCase): u''' 站点运力修改 ''' s = requests.session() lon = Login(s) log = Log() mysqlutil = MysqlUtil() log.info("---站点运力修改接口测试---") def update(self, datas): '''一个参数 datas :param datas: :return: ''' ip = readConfig.ip i_port = readConfig.i_port url = "http://" + ip + ":" + i_port + "/backend/capacity/capsummary/update" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36", "X-Requested-With": "XMLHttpRequest", "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } code = "xuxingan" passwd = "admin" self.lon.login(code, passwd) d = {"datas": datas} r = self.s.post(url, data=d, headers=headers) result = r.json() print(result) sql = " SELECT id FROM cap_delivery_detail GROUP BY id;" ids = self.mysqlutil.mysql_getrows(sql) s_ids = ids.__str__() if datas != '': for i in datas.split(','): if i.split('&')[0] in s_ids: self.assertEqual(result["code"], '0000') self.assertEqual(result["msg"], '接口正常') self.assertEqual(result["data"], []) elif i.split('&')[0] not in s_ids: self.assertEqual(result["code"], '9999') self.assertEqual(result["msg"], '未知异常') self.assertEqual(result["data"], {}) elif datas == '': self.assertEqual(result["code"], '0025') self.assertEqual(result["msg"], '参数不能为空') self.assertEqual(result["data"], {}) def test_update1(self): u'''测试站点运力修改接口:修改一条记录''' self.log.info("---1.修改一条记录:start!---") datas = '6&10' self.update(datas) self.log.info("---pass---") self.log.info("") def test_update2(self): u'''测试站点运力修改接口:批量修改多条记录''' self.log.info("---2.批量修改多条记录:start!---") datas = '6&10,8&20,10&0' self.update(datas) self.log.info("---pass---") self.log.info("") def test_update3(self): u'''测试站点运力修改接口:批量修改多条记录''' self.log.info("---3.datas传入为空:start!---") datas = '' self.update(datas) self.log.info("---pass---") self.log.info("")
def setup(self): Log().info("START".center(66, '*')) self.http = HttpRquest() self.check_json = Check()
class test_01_Order1(unittest.TestCase,requestMethod): log = Log() purchasePrice = random.randint(1000,200000) # 采购价 paidDeposit = random.randint(100,2000) # 已付订金 bond = purchasePrice * 0.2 # 应付保证金 amount = purchasePrice * 0.8 - paidDeposit # 垫资总额 carInfo = {} carInfo["carName"] = "本田 思域 2016款 1.5L" carInfo["style"] = "豪华版" carInfo["frameNumber"] = "LNAA2AA13K5003256" carInfo["produceYear"] = nowTime carInfo["gearbox"] = "自动" carInfo["interiorColor"] = "黄色" carInfo["type"] = "标配" carInfo["number"] = 1 carInfo["color"] = "炫耀黑" carInfo["amount"] = amount carInfo["guidePrice"] = random.randint(1000,200000) # 指导价 carInfo["purchasePrice"] = purchasePrice carInfo["price"] = random.randint(1000,200000) # 销售价 carInfo = json.dumps(carInfo, ensure_ascii=False) def test_01_Shop_Submit_Order(self): print(" ") self.log.info("-------SHOP下单保理1-------") # remove the warning warnings.simplefilter('ignore', ResourceWarning) # 登录 self.login(address="login_v2/index",account=r.shopAccount,password=r.shopPassword) # 提交订单 if self.s.json()["resultCode"]==200: self.post(address="frontend_v2/order/create",params= { "act":"add", # add提交,draft草稿 "paidDeposit":self.paidDeposit, # 已交订金(汽贸店给4S店) "deposit":self.paidDeposit,# 支付订金(客户给汽贸店) "voucher":image,# 定金支付凭证 "contractUrl":image,# 购车合同 "period":30,# 融资期限 "bond":self.bond,# 应付保证金 "pickUpTime":nowTime,# 提车日期 "carsInfo":self.carInfo, "userName":signName,# 上牌方 "phone":signPhone, "address":address, "idCard":signIdCard, "shopName":orgName, "orgAddress":address, "orgLink":signName,# 4S联系人 "orgPhone":phone, "account":account, "reAccount":account, "payRemark":"替xx付款", "provinceName":"广东省", "cityName":"深圳市", "areaName":"南山区", "bankName":"广发银行", "bankBranch":"南山支行", "accept":1, }) else: print("未知错误") def test_02_Admin_Verify_Order(self): self.log.info("-------ADMIN审核订单-------") # remove the warning warnings.simplefilter('ignore', ResourceWarning) # 登录 self.login(address="work_v2/login", account=r.h5Account, password=r.adminPassword) if self.s.json()["resultCode"]==200: # 保理1订单列表 self.get(address="work_v2/order/index") self.orderId = self.s.json()["data"]["list"][0]["id"] # 保理1详情 self.get(address="work_v2/order/detail",params={"orderId":self.orderId}) self.B3Title = self.s.json()["data"]["contractList"]["B3"]["Title"] self.B3Url = self.s.json()["data"]["contractList"]["B3"]["Template"] self.B4Title = self.s.json()["data"]["contractList"]["B4"]["Title"] self.B4Url = self.s.json()["data"]["contractList"]["B4"]["Template"] # 调整融资金额以及利率 self.post(address="work_v2/order/adjustAmount",params= { "orderId":self.orderId, "amount":self.amount, # 垫资总额 "rate":rate,# 利率 }) # 审核订单 # 合同参数 B3 = {} B3["loading"] = "false" B3["isUpload"] = 0 # 0:合同非上传 B3["type"] = 3 # 合同类型 B3["title"] = self.B3Title # 合同名称 B3["contractUrl"] = self.B3Url # 合同模板 B4 = {} B4["loading"] = "false" B4["isUpload"] = 0 B4["type"] = 3 B4["title"] = self.B4Title B4["contractUrl"] = self.B4Url contractList = {} contractList["B3"] = B3 contractList["B4"] = B4 contractList = json.dumps(contractList,ensure_ascii=False) self.post(address="work_v2/order/verify",params= { "orderId":self.orderId, "state":2, "reason":remark, "attachment":image, "contractList":contractList }) # 总经理审核,发起合同签署 self.get(address="h5_v2/contract/confirmSign",params= { "type":2, "id":self.orderId, "signType":0, }) else: print("未知错误")
def teardown(self): # 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串。默认填充字符为空格。 Log().info("END".center(66, '*')) print('\n')
def tests_pr(self): u'''即有宝流程测试pr合同''' Log().info("订单流程开始") time.sleep(5) com = appclass(self.driver, self.cpath) # com.capital_sel(getparam['paramk']) #资金池--暂屏蔽 com.swipeleft(3) time.sleep(1) com.elm_operate(0, "") com.elm_operate(1, self.uname) for x in range(2, 4): com.elm_operate(x, "") time.sleep(3) if com.findItem("ok"): com.elm_operate(4, "") if com.findItem("开启手势密码"): # self.driver.tap([(0,60), (1080,210), (100, 100)], 100) com.elm_operate(5, "") if com.findItem("确定"): com.elm_operate(6, "") com.elm_operate(7, "") time.sleep(4) com.get_dbtext(1, self.getparam['parama']) com.elm_operate(8, "") time.sleep(1) com.get_dbtext(0, self.getparam['paramb']) com.elm_operate(9, "") time.sleep(1) com.get_dbtext(0, self.getparam['paramc']) etm = self.driver.find_element_by_id("com.giveu.corder:id/ll_item") etms = etm.find_elements_by_id("com.giveu.corder:id/tv_choose_right") time.sleep(1) etms[0].click() time.sleep(1) com.get_dbtext(0, self.getparam['paramh']) etms[1].click() time.sleep(1) com.get_dbtext(0, self.getparam['parami']) com.elm_operate(20, "") #商品型号 com.elm_operate(12, self.getparam['paramd']) #商品金额 com.elm_operate(13, self.getparam['parame']) #首付金额 com.elm_operate(14, "") time.sleep(4) com.checkItem("选择分期", "新建订单页面一下一步保存") #------------15,16 if com.findItem(self.getparam['paramg']): com.get_dbtext(0, self.getparam['paramg']) else: com.swipeup() if com.findItem(self.getparam['paramg']): com.get_dbtext(0, self.getparam['paramg']) else: com.elm_operate(37, "") com.elm_operate(37, "") if com.findItem("请输入套餐信息"): com.elm_operate(84, "") #保险相关 bx_one = self.driver.find_elements_by_id( "com.giveu.corder:id/cb_insurance") bbx = self.driver.find_elements_by_id( "com.giveu.corder:id/cb_treasure") print(bx_one) if getparam['paramf'] == '不参加' and len(bx_one) > 0: self.driver.find_element_by_id( "com.giveu.corder:id/cb_insurance").click() elif getparam['paramf'] == '保险' and len(bbx) > 0: self.driver.find_element_by_id( "com.giveu.corder:id/cb_treasure").click() else: print("pass") time.sleep(1) qmb = self.driver.find_elements_by_id( "com.giveu.corder:id/cb_all_insurance") # wifi= self.driver.find_elements_by_id("com.giveu.corder:id/cb_wifi") sspa = self.driver.find_elements_by_id("com.giveu.corder:id/cb_broken") if self.getparam['paramj'] == '全面保' and len(qmb) > 0: self.driver.find_element_by_id( "com.giveu.corder:id/cb_insurance").click() elif self.getparam['paramj'] == '碎碎平安' and len(sspa) > 0: self.driver.find_element_by_id( "com.giveu.corder:id/cb_broken").click() else: print("pass") com.swipeup() com.elm_operate(23, "") time.sleep(4) com.checkItem("客户信息", "新建订单页面二下一步保存") #拍照 com.elm_operate(24, "") com.elm_operate(25, "") time.sleep(2) com.swipedown() com.elm_operate(26, con_name + chzw()) textval = com.get_elm_textval(26) n = {'name': textval} wryaml(PATH("..\config\yaml\jyb\dim.yaml"), n) time.sleep(2) textvall = getyaml(PATH("..\config\yaml\jyb\dim.yaml")).get('name') for s in range(27, 41): com.elm_operate(s, "") time.sleep(1) com.swipeup() com.elm_operate(41, "") Log().info("订单名称:%s " % textval) V = OracleUtil(dbname) time.sleep(2) cnoval = V.oracle_getstring( "select contract_no from cs_credit where id_person=(select id from (select * from cs_person where name like '%s%%' order by create_time desc) where rownum=1)" % textval) time.sleep(1) print(cnoval) A = MysqlUtil() time.sleep(2) if com.findItem("客户门店照片"): Log().info("订单pr合同号生成成功:%s" % cnoval) A.mysql_execute( "INSERT INTO mobiletest_mobiledata (contract_no,con_name,con_ident,con_phone,create_time,capital_source,con_status,username,runnum,case_no) VALUES ('%s','%s','%s','%s',NOW(),'%s','%s','%s','%s','%s')" % (cnoval, textval, idcard, mobilephone, getparam['paramk'], 'pr', uname, markval, getparam['paramm'])) else: Log().info("订单pr合同号生成异常:%s" % cnoval) raise RunError('合同未生成')
def setUpClass(cls) -> None: cls.log = Log() cls.data = lockUser().test_data cls.log.info('正在初始化数据库测试数据。。。。。。') databaseOperations().user_status_0()
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2018-04-15 09:00:00 # @Author : Canon # @Link : https://www.python.org # @Version : 3.6.1 from common.conf_utils import Gateway import pageobj.gateway.submit_page as Sub from common.logger import Log log = Log() class Action(object): def __init__(self, driver): self.gate = Gateway() self.driver = driver def moto(self, test_data=None): """ 预授权 :param test_data: 测试数据 type: dict """ if test_data is None: test_data = {} test_pay = Sub.SubmitPage(self.driver) log.info("----- 页面标题: %s -----" % self.driver.title) addr = self.gate.read_val("gateway", "proj_domain") + self.gate.read_val("addr", "moto") test_data.update({"提交地址": addr}) for item in test_data:
def tearDownClass(cls): Log().info('正在重置数据库测试数据。。。。。。') databaseOperations().user_status_0()
class LoginTestCase(unittest.TestCase): '''登陆''' log = Log() def setUp(self): self.headers = { "Accept-Encoding": "gzip", "Connection": "Keep-Alive", "Content-Type": "application/x-www-form-urlencoded", "Host": "testapi.mrpyq.com", "mpc-mac": "68%3Aa0%3Af6%3A08%3Ae3%3A95", "mpc-network": "wifi", "mpc-os": "19", "mpc-token": "A000004F7372FA", "mpc-type": "C8817D", "mpc-ver": "3.1.0", "User-Agent": "MingPeng/3.1.0" } self.data = { "access_token": " ", "userid": "", "v": "3.1.0", "type": "android", "phone_areacode": "+86", "channel": "main" } self.url = "https://testapi.mrpyq.com/pass/reg" def testLogin_01(self): '''测试登陆(已注册号码,正确验证码)''' self.log.info("------测试登陆(已注册号码,正确验证码):start!---------") self.data["action"] = "phone_verifycode_login" self.data["phone"] = 18872215422 self.data["code"] = 20177 self.log.info("------输入已注册号码:%s ,验证码: %s 。" % (self.data["phone"], self.data["code"])) r = requests.post(self.url, headers=self.headers, data=self.data) print(r.content) result = r.json() print(result["user"]) user = result["user"] print(result["user"]) # 断言:测试结果与期望结果对比 self.assertEqual(True, user["me"], msg='验证码登陆失败') self.log.info("获取测试结果:%s" % user["me"]) self.log.info("----------pass!-------") # self.log.info("------测试登陆(已注册号码,正确验证码):start!---------") # self.log.info("------输入已注册号码:%s ,验证码: %s 。" % (self.data["phone"], self.data["code"])) # self.log.info("获取测试结果:%s" % user["me"]) # self.log.info("----------pass!-------") def testLogin_02(self): '''测试登陆(已注册号码,错误验证码)''' self.log.info("------测试登陆(已注册号码,错误验证码):start!---------") self.data["action"] = "phone_verifycode_login" self.data["phone"] = 18872215422 self.data["code"] = 12345 self.log.info("------输入已注册号码:%s ,验证码: %s 。" % (self.data["phone"], self.data["code"])) r = requests.post(self.url, headers=self.headers, data=self.data) print(r.content) result = r.json() print(result["error"]) print(result["error_code"]) # 断言:测试结果与期望结果对比 self.assertEqual(u"该手机验证码不正确或已使用过", result["error"], msg='验证码登陆失败') self.assertEqual(-1, result["error_code"], msg='验证码登陆失败') self.log.info("获取测试结果:%s" % result["error"]) self.log.info("----------pass!-------") def testLogin_03(self): '''测试登陆(已注册号码,正确密码)''' self.log.info("------测试登陆(已注册号码,正确密码):start!---------") self.data["action"] = "phone_login" self.data["phone"] = 18872215422 self.data["password"] = 13114328435 self.log.info("------输入已注册号码:%s ,正确密码: %s 。" % (self.data["phone"], self.data["password"])) r = requests.post(self.url, headers=self.headers, data=self.data) print(r.content) result = r.json() user = result["user"] print(result["user"]) # 断言:测试结果与期望结果对比 self.assertEqual(True, user["me"], msg='密码登陆失败') self.log.info("获取测试结果:user{me:} = %s" % user["me"]) self.log.info("----------pass!-------") def testLogin_04(self): '''测试登陆(已注册号码,错误密码)''' self.log.info("------测试登陆(已注册号码,错误密码):start!---------") self.data["action"] = "phone_login" self.data["phone"] = 18872215422 self.data["password"] = 13114328433 self.log.info("------输入已注册号码:%s ,错误密码: %s 。" % (self.data["phone"], self.data["password"])) r = requests.post(self.url, headers=self.headers, data=self.data) print(r.content) result = r.json() print(result["error"]) print(result["error_code"]) # 断言:测试结果与期望结果对比 self.assertEqual(u"您的手机号或密码不正确", result["error"], msg='验证码登陆失败') self.assertEqual(-1, result["error_code"], msg='验证码登陆失败') self.log.info("获取测试结果:error = %s,error_code = %s" % (result["error"], result["error_code"])) self.log.info("----------pass!-------")
def setUpClass(cls) -> None: cls.log = Log() cls.data = disableWithdraw().test_data cls.log.info('正在初始化数据库测试数据。。。。。。') databaseOperations().select_withdraw_status()
class Buyed_lesson(unittest.TestCase): def setUp(self): self.s = requests.session() self.lgin = LG(self.s) #实例化登录类 self.uid_token = self.lgin.login() #登录测试环境澜渟医生 self.header = {'User-Agent': 'LanTingDoctor/1.3.1 (iPad; iOS 10.1.1; Scale/2.00)', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'zh-Hans-CN;q=1', 'Content-Type': 'application/json', 'requestApp': '3', 'requestclient': '2', 'versionForApp': '2.0', 'Authorization': 'Basic YXBpTGFudGluZ0BtZWRsYW5kZXIuY29tOkFwaVRobWxkTWxkQDIwMTM=', 'Connection': 'keep-alive'} self.log = Log() def test_buyed_lesson(self): u'这是测试已购课程接口-课程类型为所有' self.log.info('-----开始测试已购课程接口(课程类型是所有)------') url = 'http://api.lesson.sunnycare.cc/v1/orders' json_data = { "timestamp":str(int(time.time())), "product_type":"", "token":self.uid_token, "time":"0", "nonce": get_digit() } json_data['sign'] = get_sign(json_data) r = self.s.post(url,headers = self.header,json=json_data) try: self.log.info('断言请求接口是否成功!') self.log.info('返回的内容是:%s' % r.json()) self.assertEqual('请求成功.',r.json()['note']) except Exception as e: raise AssertionError self.log.error('请求已购课程接口失败,原因:%s' % e) def test_buyed_lesson2(self): u'这是测试已购课程接口-课程类型为所有课程' self.log.info('-----开始测试已购课程接口(课程类型是所有课程)------') url = 'http://api.lesson.sunnycare.cc/v1/orders' json_data = { "timestamp":str(int(time.time())), "product_type":"2", "token":self.uid_token, "time":"0", "nonce": get_digit() } json_data['sign'] = get_sign(json_data) r = self.s.post(url,headers = self.header,json=json_data) try: self.log.info('断言请求接口是否成功!') self.log.info('返回的内容是:%s' % r.json()) self.assertEqual('请求成功.',r.json()['note']) except Exception as e: raise AssertionError self.log.error('请求已购课程接口失败,原因:%s' % e) def test_buyed_lesson3(self): u'这是测试已购课程接口-课程类型为所有专栏' self.log.info('-----开始测试已购课程接口(课程类型是所有专栏)------') url = 'http://api.lesson.sunnycare.cc/v1/orders' json_data = { "timestamp":str(time.time()), "product_type":"3", "token":self.uid_token, "time":"0", "nonce": get_digit() } json_data['sign'] = get_sign(json_data) r = self.s.post(url,headers = self.header,json=json_data) try: self.log.info('断言请求接口是否成功!') self.log.info('返回的内容是:%s' % r.json()) self.assertEqual('请求成功.',r.json()['note']) except Exception as e: raise AssertionError self.log.error('请求已购课程接口失败,原因:%s' % e) def tearDown(self): self.s.close()
def tearDownClass(cls): Log().info('正在重置数据库测试数据。。。。。。') databaseOperations().select_withdraw_status()
class Common_sites(unittest.TestCase): u''' 站点列表接口 ''' log = Log() mysqlutil = MysqlUtil() log.info("---站点列表接口测试---") def sites(self, cityCompanyCode): '''一个参数 市公司编码:cityCompanyCode :param cityCompanyCode: :return: ''' ip = readConfig.ip i_port = readConfig.i_port url = "http://" + ip + ":" + i_port + "/backend/capacity/common/sites" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36", "X-Requested-With": "XMLHttpRequest", "Connection": "keep-alive", "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } d = {"cityCompanyCode": cityCompanyCode} r = requests.post(url, data=d, headers=headers) result = r.json() self.log.info("---获取响应结果:%s" % result) # self.log.info("---校验code字段---") self.assertEqual(result["code"], '0000') # self.log.info("---校验msg字段---") self.assertEqual(result["msg"], '接口正常') sql1 = "SELECT parent_code FROM cap_organization WHERE LEVEL = '3' GROUP BY parent_code;" cityCompanyCodes = self.mysqlutil.mysql_getrows( sql1) #从数据库中取出所有的市公司编码(parent_code) s_cityComcityCompanyCodes = cityCompanyCodes.__str__() #将元组转换成字符串 # a_city = cityCompanyCodes[random.randint(0,(len(cityCompanyCodes)))][0] if cityCompanyCode in s_cityComcityCompanyCodes: # self.log.info("---校验data中的查询结果数量---") sql = "SELECT * FROM cap_organization WHERE LEVEL = '3' AND parent_code = '%s';" % cityCompanyCode counts = self.mysqlutil.mysql_getcounts(sql) self.assertEqual(len(result["data"]), counts) elif cityCompanyCode == '': # self.log.info("---校验data中的查询结果数量---") self.assertEqual(result["data"], []) elif cityCompanyCode != '' and cityCompanyCode not in s_cityComcityCompanyCodes: # self.log.info("---校验data中的查询结果数量---") self.assertEqual(result["data"], []) def test_sites1(self): u'''测试站点列表接口:请求参数正确''' self.log.info("---1.请求参数正确:start!---") sql1 = "SELECT parent_code FROM cap_organization WHERE LEVEL = '3' GROUP BY parent_code;" cityCompanyCodes = self.mysqlutil.mysql_getrows(sql1) print(cityCompanyCodes) cityCompanyCode = cityCompanyCodes[random.randint( 0, (len(cityCompanyCodes)))][0] self.sites(cityCompanyCode) self.log.info("---pass---") self.log.info("") def test_sites2(self): u'''测试站点列表接口:cityCompanyCode传入为空''' self.log.info("---2.cityCompanyCode传入为空:start!---") cityCompanyCode = "" self.sites(cityCompanyCode) self.log.info("---pass---") self.log.info("") def test_sites3(self): u'''测试站点列表接口:cityCompanyCode传入不存在的市公司编码''' self.log.info("---3.cityCompanyCode传入不存在的市公司编码:start!---") cityCompanyCode = "a" self.sites(cityCompanyCode) self.log.info("---pass---") self.log.info("")
class Client: cursor_default = None cursor_capture = None def __init__(self, resolution, host, port, username, password, split="\n"): global network_log self.log = Log('client') network_log = Log('network') # must have at least one handler self.log.logger.addHandler(logging.NullHandler()) network_log.logger.addHandler(logging.NullHandler()) # opengl must be initialized first self.log.info("Initializing display (windowed at %(resolution)s)", dict(resolution='%dx%d'%resolution)) self._screen = pygame.display.set_mode(resolution, OPENGL|DOUBLEBUF) pygame.display.set_caption('yamosg') self.log.debug("OpenGL setup (version=\"%(version)s\", vendor=\"%(vendor)s\")", dict(version=glGetString(GL_VERSION), vendor=glGetString(GL_VENDOR))) setup_opengl() Client.cursor_default = pygame.cursors.arrow Client.cursor_capture = pygame.cursors.diamond self._resolution = Vector2i(resolution) self._username = username self._password = password self._split = split self._running = False self._state = StateManager() self._game = GameWidget(self, self._resolution) self._container = Composite(Vector2i(0,0), self._resolution, children=[self._game]) self._toolbar = Toolbar(self._game) self._window = VBox() self._window.add(self._toolbar, size=LayoutAttachment(Vector2i(1,0), Vector2i(0,25))) self._window.add(self._container) self._state.push(GameState(self._resolution, self._window)) self._network = Network(self, host, port) self._command_store = {} self._command_queue = [] self._command_lock = threading.Lock() self._playerid = None self._players = {} self._capture_position = None self._timer = 0 # resizing must be done after state has been created so the event is propagated proper. self._resize(self._resolution) def add_window(self, win): self._container.add(win) @event(pygame.QUIT) def quit(self, event=None): self._running = False def is_running(self): return self._running def resolution(self): return self._resolution def run(self): self._running = True self._network.start() while self._running: try: self._flush_queue() self._logic() self._render() except GLError: traceback.print_exc() self.quit() except: traceback.print_exc() @event(pygame.VIDEORESIZE, lambda event: Vector2i(event.w, event.h)) def _resize(self, resolution): self.log.debug("Resolution changed to %dx%d", resolution.x, resolution.y) #self._screen = pygame.display.set_mode(resolution.xy(), OPENGL|DOUBLEBUF|RESIZABLE) setup_opengl() self._resolution = resolution glMatrixMode(GL_PROJECTION) glLoadIdentity() glOrtho(0, resolution.x, 0, resolution.y, -1.0, 1.0); glMatrixMode(GL_MODELVIEW) glLoadIdentity() self._state.resize(resolution) self._game.on_resize(resolution, True) def _flush_queue(self): while True: self._command_lock.acquire() if len(self._command_queue) == 0: self._command_lock.release() break command, args = self._command_queue.pop(0) self._command_lock.release() try: self._dispatch(command, args) except: traceback.print_exc() def _logic(self): global event_table for event in pygame.event.get(): func, adapter = event_table.get(event.type, (None,None)) if func is None: continue func(self, adapter(event)) t = time() if t-self._timer > 1.0: self._toolbar.invalidate() self._timer = t @event(pygame.MOUSEMOTION) def _mousemotion(self, event): pos = Vector2i(event.pos) pos.y = self._resolution.y - pos.y self._state.on_mousemove(pos) @event(pygame.MOUSEBUTTONDOWN) def _mousebuttondown(self, event): pos = Vector2i(event.pos) pos.y = self._resolution.y - pos.y if self._capture_position is not None: if event.button == 1: callback, args, kwargs = self._capture_position try: callback(pos, *args, **kwargs) except: traceback.print_exc() self._capture_position = None pygame.mouse.set_cursor(*Client.cursor_default) return self._state.on_buttondown(pos, event.button) @event(pygame.MOUSEBUTTONUP) def _mousebuttonup(self, event): pos = Vector2i(event.pos) pos.y = self._resolution.y - pos.y self._state.on_buttonup(pos, event.button) def _render(self): glClearColor(1,0,0,0) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) self._state.render() pygame.display.flip() def _dispatch(self, cmd, args): """ Run command """ global network_log network_log.debug('got %s(%s)', cmd, ', '.join([str(x) for x in args])) try: # Try to get function func = getattr(self, cmd) # See if it is exposed, so a malicious cannot run any func. if not getattr(func, 'exposed'): raise AttributeError # raised to get same handling as a non-existing func. except AttributeError: print 'Malformed or bad command:', cmd, args return except: print 'Unhandled exception when running command:', cmd, args traceback.print_exc() return func(*args) def push_command(self, line): # Run from network thread try: self._command_lock.acquire() tokens = parse_tokens(line) id = tokens[0] if id == 'UNICAST' or id == 'BROADCAST': id, command, args = parse(line) self._command_queue.append((command, args)) elif id in self._command_store: status = tokens[1] args = tuple(tokens[2:]) data = line[len(id)+len(status)+2:] self._command_store[id].reply(status, args, data) else: raise RuntimeError, 'Got a reply for ID ' + id + ' but no matching request' except: traceback.print_exc() finally: self._command_lock.release() def call(self, command, *args): """ Synchronously call and get reply """ cmd = Command(command, *args) # send command with self._command_lock: self._command_store[cmd.id] = cmd self._network.send(str(cmd) + self._split) # await reply reply = cmd.wait() # delete command with self._command_lock: del self._command_store[cmd.id] return reply @server_call('LIST_OF_ENTITIES', decode=True) def list_of_entities(self, descriptions): self._game.set_entities([Entity(**x) for x in descriptions]) @expose def NEWENT(self, data): decoded = json.loads(data) self._game.add_entity(Entity(**decoded)) @server_call('ENTINFO', 'id', decode=True) def entity_info(self, info): return info @server_call('ENTACTION', 'id', 'action', decode=True) def entity_action(self, info): return info @server_call('PLAYERINFO', 'id', decode=True) def playerinfo(self, info): self._toolbar.set_cash(info['cash']) @expose def CASH(self, amount): self._toolbar.set_cash(int(amount)) @server_call('LOGIN', 'username', 'password', decode=True) def login(self, info): self.playerid = info['id'] self.log.debug('player id is %s', self.playerid) self.playerinfo(self.playerid) @server_call('PLAYERS', decode=True) def players(self, players): return players def player_by_id(self, id): return self._players.get(unicode(id), None) @expose def Hello(self): self.call('SET', 'ENCODER', 'json') try: self.login(username=self._username, password=self._password) except RuntimeError, e: self.log.error(e) self.quit() return self._players = self.players() self.list_of_entities()