def get_data(type): arrs = [] if type == "post": arrs.append(tuple(read_yaml("address.yaml").get("post_address").values())) elif type == "put": arrs.append(tuple(read_yaml("address.yaml").get("put_address").values())) return arrs
def get_date(key): arrs = list() if key == "add_address": arrs.append( tuple(read_yaml("address.yaml").get("add_address").values())) return arrs else: arrs.append( tuple(read_yaml("address.yaml").get("update_address").values())) return arrs
def get_data(key): arrs = [] if key == "add": data = read_yaml("address.yaml").get("add_address") arrs.append(tuple(data.values())) return arrs else: data = read_yaml("address.yaml").get("update_address") arrs.append(tuple(data.values())) return arrs
class TestMpLogin: """自媒体登录测试脚本""" def setup(self): # 获取driver driver = GetWebDriver.get_web_driver(page.mp_url) # 实例化统一入口类 self.mp = PageIn(driver).page_get_mpLogin() def teardown(self): # 关闭驱动 GetWebDriver.quit_web_driver() @pytest.mark.parametrize("phone,code,nickname", read_yaml("mp_login.yaml")) def test_login(self, phone, code, nickname): # 调用登录业务方法 self.mp.page_login(phone, code) try: # 断言 assert nickname == self.mp.page_get_nickname() except Exception as e: # 截图 self.mp.base_get_img() # 日志 log.error("错误:{}".format(e)) # 抛异常 raise
def get_data(): """登录测试数据""" result = read_yaml('login_data') data_list = [] for data in result.values(): data_list.append(tuple(data.values())) return data_list
class TestLogin(unittest.TestCase): # 1 初始化 def setUp(self) -> None: # 获取apilogin对象 self.login = ApiLogin() # 2登陆测试方法 @parameterized.expand(read_yaml("login.yaml")) def test_login(self, mobile, password): # 调用登陆接口 result = self.login.api_login(mobile, password) print("登陆结果:", result.json()) r = result.json() # 断言 asser_common(self, result) # # 断言 # # 断言状态码 200 # self.assertEqual(200, result.status_code) # # 断言success True # self.assertEqual(True, r.get("success")) # # 断言code 10000 # self.assertEqual(10000, r.get("code")) # # 断言message 操作成功! # self.assertEqual("操作成功!", r.get('message')) # 提取token token = r.get("data") log.info("正在提取token:{}".format(token)) # 追加到公共变量 headers api.headers["Authorization"] = "Bearer " + token print("追加后的headers为:", api.headers)
class TestApp: # 1. 初始化 def setup_class(self): # 获取ApiApp对象 self.app = ApiApp() # 2. 登录测试接口 @pytest.mark.parametrize("mobile,code", read_yaml("mp_login.yaml")) def test01_app_login(self, mobile, code): # 1. 调用登录接口 r = self.app.api_app_login(mobile, code) # 2. 提取token Tool.common_token(r) try: # 3. 断言 Tool.common_assert(r) except Exception as e: # 1. 日志 log.error(e) # 2. 抛异常 raise # 3. 查询频道下所有文章测试接口 def test02_app_article(self): # 1. 调用查询接口 r = self.app.api_app_article() try: # 2. 断言 Tool.common_assert(r, status_code=200) except Exception as e: # 1. 日志 log.error(e) # 2. 抛异常 raise
class TestMisLogin: def setup(self): # 获取driver driver = GetWebDriver.get_web_driver(page.mis_url) # 获取mis页面 self.mis = PageIn(driver).page_get_misLogin() def teardown(self): # 退出驱动 GetWebDriver.quit_web_driver() @pytest.mark.parametrize("username,pwd,nickname", read_yaml("mis_login.yaml")) def test_login(self, username, pwd, nickname): # 登陆业务方法 self.mis.page_combination_login(username, pwd) # 断言 try: assert nickname in self.mis.page_mis_nickname() except Exception as e: # 日志 log.error(e) # 截图 self.mis.base_get_img() raise
class TestApp: # 初始化 def setup_class(self): # 获取ApiApp对象 self.app = ApiApp() # 获取Tool对象 self.tool = Tool() # 登录测试方法 @pytest.mark.parametrize("mobile,code", read_yaml("app_login.yaml")) def test01_app_login(self, mobile, code): # 调用登录业务方法 response = self.app.api_app_login(mobile, code) print("App登录后的数据为:", response.json()) # 断言 self.tool.assert_code_message(response) # 提取token self.tool.get_token(response) print("App登录后提取的token信息:", api.headers) # 查询文章测试方法 def test02_search_article(self): # 调用查询业务方法 response = self.app.api_search_article() print("App搜文章的值为:", response.json()) # 断言 self.tool.assert_code_message(response, code=200)
def get_data(): user = {'username': '', 'password': 0} for data in read_yaml('login.yaml').values(): user['username'] = data['username'] user['password'] = data['password'] # print('startLogin, username = '******'username'] + 'pwd = ' + user['pwd']) return user
def get_data(text): data_list = [] if text == 'post': result = read_yaml('address_data') # 通过列表推导式生成列表 data_list = [tuple(data.values()) for data in result.values()] elif text == 'update': data_list = [("kawayi", '16301335675', {'province': '河北省', 'city': '石家庄市', 'district': '新华区'}, 'HELLOOSS', '052360', 'kawayi 16301335675')] return data_list
class TestMp: # 1. 初始化 def setup_class(self): # 获取ApiMp对象 self.mp = ApiMp() # 2. 登录接口测试方法 @pytest.mark.parametrize("mobile,code", read_yaml("mp_login.yaml")) def test01_mp_login(self, mobile, code): # 调用登录接口 r = self.mp.api_mp_login(mobile, code) # 打印输出结果 print("登录的结果为:", r.json()) try: # 提取token Tool.common_token(r) # 断言 Tool.common_assert(r) except Exception as e: # 写日志 log.error(e) # 抛异常 raise # # 提取token # token = r.json().get("data").get("token") # # 追加请求信息头 # api.headers['Authorization'] = "Bearer " + token # print("添加token后的headers为:", api.headers) # # 断言状态码 # assert 201 == r.status_code # # 断言响应信息 # assert "OK" == r.json().get("message") # 3. 发布文章测试接口方法 def test02_mp_article(self, title=api.title, content=api.content, channel_id=api.channel_id): # 1. 调用发布文章接口 r = self.mp.api_mp_article(title, content, channel_id) # 2. 提取id api.article_id = r.json().get("data").get("id") print("发布文章成功后的id值为:", api.article_id) try: # 3. 断言 Tool.common_assert(r) except Exception as e: # 1. 日志 log.error(e) # 2. 抛异常 raise
class TestMis(object): # 1. 初始化 def setup_class(self): # 获取ApiMis对象 self.mis = ApiMis() # 2. 登录 @pytest.mark.parametrize("account,password", read_yaml("mis_login.yaml")) def test01_mis_login(self, account, password): # 1. 调用登录接口 r = self.mis.api_mis_login(account, password) try: # 2. 提取token Tool.common_token(r) print("后台管理系统登录后,请求headers为:", api.headers) # 3. 断言 Tool.common_assert(r) except Exception as e: # 日志 log.error(e) # 抛异常 raise # 3. 查询文章 def test02_mis_search(self): # 1. 调用查询文章接口 r = self.mis.api_mis_search() print("查询文章成功后:", r.json()) try: # 2. 断言 Tool.common_assert(r, status_code=200) except Exception as e: # 日志 log.error(e) # 抛异常 raise # 4. 审核文章 def test03_mis_audit(self): # 1. 调用审核文章接口 r = self.mis.api_mis_audit() try: # 2. 断言 Tool.common_assert(r) except Exception as e: # 日志 log.error(e) # 抛异常 raise
class TestLogin: @classmethod def setup_class(cls): WinRM().run_bat_file() cls.driver = GetDriver.get_web_driver(page.URL) cls.login = PageLogin(cls.driver) @classmethod def teardown_class(cls): GetDriver().quit_web_driver() @pytest.mark.parametrize("username,password,code", read_yaml("login11.yaml")) def test_login(self, username, password, code): self.login.page_login(username, password, code) if not self.login.page_if_success(): log.info('未登录成功') try: text = self.login.page_get_error_text() log.info(f'正在进行断言,获取断言关键字{text}') assert self.login.page_get_error_text() in \ ('用户名不能为空!', '密码错误!', '账号格式不匹配!', '密码不能为空!', '账号不存在!', '验证码错误', '验证码不能为空!') except Exception as e: log.error(f"断言失败:{e}") module_name = str(os.path.basename(__file__)).split('.')[0] self.login.base_get_screenshot(module_name) raise finally: sleep(3) try: self.login.page_click_error_btn() finally: log.info('返回首页') self.login.page_return_FP() else: log.info('未登录成功') try: log.info('正在进行断言') assert self.login.page_logout_text() == "安全退出" except Exception as e: log.error(f"断言失败:{e}") module_name = str(os.path.basename(__file__)).split('.')[0] self.login.base_get_screenshot(module_name) raise sleep(3) log.info('正在登出') self.login.page_click_logout()
class TestNoticeAll: @classmethod def setup_class(cls): ApiLogin().api_login_post(url=api.login_url, username='******', password='******') @classmethod def teardown_class(cls): ApiLogout().Api_logout_post(url=api.logout_url) GetSession.clear_session() @pytest.mark.parametrize('url, page_size, page_num, keywords,expect_code,expect_msg', read_yaml('notice_all.yaml')) def test_notice_all(self, url, page_size, page_num, keywords, expect_code, expect_msg): self.notice = ApiNoticeAll().api_notice_all(url, page_size, page_num, keywords) assert self.notice.status_code == expect_code assert [self.notice.json()['ret'], self.notice.json()['total']] == expect_msg
class TestNoticeOne: @classmethod def setup_class(cls): ApiLogin().api_login_post(url=api.login_url, username='******', password='******') @classmethod def teardown_class(cls): ApiLogout().Api_logout_post(url=api.logout_url) GetSession.clear_session() @pytest.mark.parametrize('url,id,expect_code,expect_msg', read_yaml('notice_one.yaml')) def test_notice_published(self, url, id, expect_code, expect_msg): self.notice = ApiNoticeOne().api_notice_one(url, id) assert self.notice.status_code == expect_code assert self.notice.json()['ret'] == expect_msg
class TestEmployee(unittest.TestCase): """1.初始化方法""" @classmethod def setUpClass(cls) -> None: """获取apiempolyee对象""" cls.api = ApiEmployee() # 2新增员工 @parameterized.expand(read_yaml("employee_post.yaml")) def test01_post(self, username, mobile, workNumber): # 调用新增员工接口 r = self.api.api_post_employee(username, mobile, workNumber) # 断言 asser_common(self, r) print("新增员工结果:", r.json()) log.info("新增员工结果:{}".format(r.json())) # 提取user_id api.user_id = r.json().get("data").get("id") print("员工user_id为", api.user_id) log.info("新增员工后提取的员工id为:{}".format(api.user_id)) # 3修改员工测试方法 def test02_put(self): """调用更新接口""" r = self.api.api_put_employee() log.info("更新员工结果为:{}".format(r.json())) # 断言 asser_common(self, r) # 4查询员工测试方法 def test03_get(self): """调用查询接口""" r = self.api.api_get_employee() log.info("查询员工结果为:{}".format(r.json())) # 断言 asser_common(self, r) # 5删除员工测试方法 def test04_delete(self): # 调用删除员工接口 r = self.api.api_delete_employee() print("删除结果", r.json()) # 断言 asser_common(self, r)
class TestLogout: @classmethod def setup_class(cls): pass @classmethod def teardown_class(cls): GetSession.clear_session() @pytest.mark.parametrize( 'url, username, password,expect_code,expect_msg,expect_headers', read_yaml('logout_prepare.yaml')) def test_logout(self, url, username, password, expect_code, expect_msg, expect_headers): ApiLogin().api_login_post(url, username, password) self.logout = ApiLogout().Api_logout_post(url=api.logout_url) assert self.logout.status_code == expect_code assert self.logout.json() == expect_msg assert expect_headers in self.logout.headers['Set-Cookie']
class TestAppLogin: def setup_class(self): driver=GetWebDriver.get_app_driver() self.login=PageAppLogin(driver) def teardown_class(self): GetWebDriver.quit_app_driver() @pytest.mark.parametrize("phone,pwd",read_yaml("app_login.yaml")) def test_login(self,phone,pwd): self.login.page_combination_method(phone,pwd) try: assert self.login.page_login_is_success() except Exception as e: log.error(e) self.login.base_get_img() raise
class TestMp: # 1. 初始化 def setup_class(self): # 获取ApiMp对象 self.mp = ApiMp() # 2. 登录接口测试方法 @pytest.mark.parametrize("mobile,code", read_yaml("mp_login.yaml")) def test01_mp_login(self, mobile, code): # 调用登录接口 r = self.mp.api_mp_login(mobile, code) # 打印输出结果 print("登录的结果为: ", r.json()) try: # 提取token Tool.common_token(r) # 断言 Tool.common_assert(r) except Exception as e: # 日志 log.error(e) # 抛异常 raise # 3. 发布文章接口测试方法 def test02_mp_article(self, title=api.title, content=api.content, channel_id=api.channel_id): # 1. 调用发布文章接口 r = self.mp.api_mp_article(title, content, channel_id) print("登录的结果为:", r.json()) # 2. 提取id api.article_id = r.json().get("data").get("id") print("发布文章成功后的id为:{}".format(api.article_id)) try: # 3. 断言 Tool.common_assert(r) except Exception as e: # 1. 日志 log.error(e) # 2. 抛异常 raise
class TestListAccount: @classmethod def setup_class(cls): ApiLogin().api_login_post(url=api.login_url, username='******', password='******') @classmethod def teardown_class(cls): ApiLogout().Api_logout_post(url=api.logout_url) GetSession.clear_session() @pytest.mark.parametrize( 'url,page_size,page_num,keywords,expect_code,expect_msg', read_yaml('list_account.yaml')) def test_list_account(self, url, page_size, page_num, keywords, expect_code, expect_msg): self.list = ApiListAccount().api_list_get(url, page_size, page_num, keywords) assert self.list.status_code == expect_code assert self.list.json() == expect_msg
class TestMis: # 初始化 def setup_class(self): # 后去ApiMis对象 self.mis = ApiMis() # 获取Tool对象 self.tool = Tool() # 登录 @pytest.mark.parametrize("account,password", read_yaml("mis_login.yaml")) def test01_mis_login(self, account, password): # 调用登录业务方法 response = self.mis.api_mis_login(account, password) print("后台登录数据:", response.json()) # 断言 self.tool.assert_code_message(response) # 提取 token self.tool.get_token(response) print("提取的token值为:", api.headers) print("--" * 50) # 查询 def test02_mis_search(self): # 调用查询业务方法 response = self.mis.api_search_article() print("--" * 50) print("查询结果为:", response.json()) # 断言 self.tool.assert_code_message(response, code=200) # 审核 def test03_mis_audit(self): # 调用审核业务方法 response = self.mis.api_audit() print("--" * 50) print("审核结果为:", response.json()) # 断言 self.tool.assert_code_message(response)
class TestAddAccount: @classmethod def setup_class(cls): ApiLogin().api_login_post(url=api.login_url, username='******', password='******') @classmethod def teardown_class(cls): ApiLogout().Api_logout_post(url=api.logout_url) GetSession.clear_session() @pytest.mark.parametrize('url, realname, username, password, number, desc, type,expect_code,expect_msg', read_yaml('add_account.yaml')) def test_add_account(self,url, realname, username, password, number, desc, type,expect_code,expect_msg): self.add = ApiAddAccount().api_add_account_post(url, realname, username, password, number, desc, type) assert self.add.status_code == expect_code assert self.add.json()['ret'] == expect_msg re = ApiListAccount().api_list_get( url = url, page_size=10, page_num=1, keywords=realname ) assert re.json()['total'] == 1 ApiDeleteAccount().api_delete_account(url=url,id=self.add.json()['id'])
class TestMpArticlePublish: def setup_class(self): # 获取driver driver = GetWebDriver.get_web_driver(page.mp_url) # 实例化统一入口类 self.pageIn = PageIn(driver) # 调用登录页面 self.pageIn.page_get_mpLogin().page_login_success() # 调用发布页面 self.ari = self.pageIn.page_get_mpArticle() def teardown_class(self): GetWebDriver.quit_web_driver() @pytest.mark.parametrize("title,content,result", read_yaml("mp_article.yaml")) def test_article_publish(self, title, content, result): self.ari.page_combination_publish(title, content) try: assert result in self.ari.page_new_add_result() except Exception as e: self.ari.base_get_img() log.error(e) raise
def get_data(): arrs = [] for data in read_yaml("add_order.yaml").values(): arrs.append(tuple(data.values())) return arrs
class TestUser: @classmethod def setup_class(cls): log.info('清除服务器缓存文件') run_bat('clear_session.bat') log.info('导入数据库测试数据') read_sql('mirrormx_customer_chat_talk2.sql') read_sql('mirrormx_customer_chat_message2.sql') read_sql('mirrormx_customer_chat_data.sql') read_sql('mirrormx_customer_chat_shared_file.sql') read_sql('mirrormx_customer_chat_upload.sql') # 主测试机的初始化设置 cls.driver = GetDriver.get_app_driver() cls.user = PageUserList(cls.driver) cls.fwq = PageFwq(cls.driver) cls.login = PageLogin(cls.driver) cls.user.base_if_app_is_install('net.mirrormx.livechat') cls.driver.start_activity('net.mirrormx.livechat', '.MainActivity') if float(cap2['platformVersion']) >= 8: log.info('正在处理高版本系统的弹窗') cls.driver.switch_to.alert.accept() cls.fwq.page_hand_add_fwq( '我的服务器', 'http://192.168.1.10/kefu/php/app.php?mobile-api') cls.login.page_login('我的服务器', 'http://192.168.1.10/kefu/php/app.php?mobile-api', username='******', password='******') # 辅助测试机初始化设置 cls.driver2 = GetDriver.get_app_driver2() cls.driver3 = GetDriver.get_app_driver3() cls.user.page_other_help(cls.driver2, cls.driver3) @classmethod def teardown_class(cls): GetDriver.quit_app_driver() GetDriver.quit_app_driver2() GetDriver.quit_app_driver3() def test01_user_click_myself(self, username='******', password='******'): log.info('点击自己') # self.login.page_login('我的服务器', 'http://192.168.1.10/kefu/php/app.php?mobile-api', username, password) self.user.page_user_click_user(username) try: log.info('断言是否跳转到详情页') assert self.user.page_user_if_go_details() self.user.page_user_go_back_from_details() except: log.error('没有跳转到详情页,正在截图') self.login.base_get_screenshot_as_file(module_name) raise def test02_user_click_other(self, username='******'): log.info(f'点击其他用户{username}') self.user.page_user_click_user(username) if self.user.page_user_if_go_details(): self.user.page_user_click_details_send_btn() try: log.info('正在进行断言能否跳转到会话页面') assert self.user.page_user_if_go_conversation() self.user.page_user_go_back_from_conversation() self.user.page_user_go_back_from_details() except: log.error('点击其他用户没有正确跳转,正在截图') self.login.base_get_screenshot_as_file(module_name) raise @pytest.mark.parametrize('username,expect', read_yaml('user_list.yaml')) def test03_user_list_display(self, username, expect): try: log.info(f'正在用户列表搜索其他用户{username},该用户状态为{expect}') log.info('正在对用户状态进行断言') assert self.user.page_user_find_user_if_online(username) == expect except: log.error('断言失败,正在截图') self.login.base_get_screenshot_as_file(module_name) raise def test04_user_conversation(self): log.info('主机查询收到的消息') self.user.page_user_click_talk_list_btn() try: log.info('正在进行断言,判断主机是否收到消息') sleep(10) assert self.user.page_user_find_user_if_online('test03') self.user.page_user_click_user('test03') self.user.page_input_message('我是04,收到03的一条测试信息') self.user.page_click_send_btn() self.user.page_user_go_back_from_conversation() except: log.error('没有收到消息') self.login.base_get_screenshot_as_file(module_name) raise try: log.info('正在进行断言是否能够查看其他用户消息对话') assert not self.user.page_user_find_user_if_online('test05') log.info('没有收到,断言成功') # self.user.page_user_go_back_from_conversation() self.user.page_click_user_list_btn() except: log.error('能够查看你其他用户消息') self.login.base_get_screenshot_as_file(module_name) raise
from selenium.webdriver.common.by import By from tool.read_yaml import read_yaml """以下为自媒体配置数据 """ # 文章标题 article_title = read_yaml("mp_article.yaml")[0][0] # 频道 article_channel = "数据库" """以下为APP配置数据""" appPackage = "com.itcast.toutiaoApp" appActivity = ".MainActivity" """web端元素定位方法""" # Mpurl mp_url = "http://ttmp.research.itcast.cn/" # Misurl mis_url = "http://ttmis.research.itcast.cn/#/" # 手机号 mp_phone = By.CSS_SELECTOR, ".el-input__inner" # 验证码 mp_verify_code = By.CSS_SELECTOR, "[placeholder='验证码']" # 登录按钮 mp_login_btn = By.CSS_SELECTOR, ".el-button--primary" # 昵称 mp_nickname = By.CSS_SELECTOR, ".user-name" # # 点击内容管理 # mp_article_manage=By.CSS_SELECTOR,"" # # 选择发布文章 # mp_article_publish=By.CSS_SELECTOR,".is-opened > ul:nth-child(2) > li:nth-child(1)"
def get_data(): arrs = [] for arr in read_yaml("login.yaml").values(): arrs.append(tuple(arr.values())) return arrs
def get_data(key): arrs = [] data = read_yaml("address.yaml").get(key) arrs.append(tuple(data.values())) return arrs
def get_data(): arrs = [] for data in read_yaml("login.yaml").values(): arrs.append((data.get("username"),data.get("password"))) return arrs