class FirstCase(unittest.TestCase): # def setUpClass(cls): # cls.driver = webdriver.Chrome() # cls.driver.get('https://sso.ifanr.com/register/') # cls.driver.maximize_window() # cls.login = RegisterBusiness(cls.driver) def setUp(self): self.driver = webdriver.Chrome() self.driver.get('https://sso.ifanr.com/register/') self.driver.maximize_window() self.login = RegisterBusiness(self.driver) def tearDown(self): # 在这个过程中解决截图操作 time.sleep(2) for method_name, error in self._outcome.errors: if error: case_name = self._testMethodName file_name = os.path.join(os.getcwd() + '/image/' + case_name + '.png') self.driver.save_screenshot(file_name) # print(self._outcome) # file_name = r'D:\PycharmProjects\ImoockSelenium\Image' + 'case_name' + '.png' # self.driver.save_screenshot(file_name) # self.driver.close() # def tearDownClass(cls): # cls.driver.close() def test_register_email_error(self): #一目了然的命名 测试登录时 邮箱错误 email_error = self.login.register_email_error('youxiangerror', '34', '111aaa', '111aaa') self.assertIs(email_error, '注册成功,第一条case结果为失败,输入的邮箱为正确格式的邮箱') # self.assertFalse(email_error,'第一条case结果为通过,输入邮箱格式为错误,邮箱校验通过。') # if email_error == True: #获取不到错误信息 就是邮箱格式为正确的 # print('注册成功,第一条case结果为失败,输入的邮箱为正确格式的邮箱') # else: # print('注册失败。第一条case结果为通过,输入邮箱格式为错误,邮箱校验通过。') def test_register_password_error(self): password_error = self.login.register_password_error( '*****@*****.**', 'password', '111aaa', '111') self.assertFalse(password_error, 'case执行了') # if password_error == True:#获取不到密码错误元素。2次密码相同 # print('注册成功,第二条case失败,2次输入密码相同') # else: # print('注册失败,第二条case结果为通过,输入的2次密码不一致') def test_register_repeat_error(self): repeat_error = self.login.register_repeat_error( '*****@*****.**', 'mima', '111aaa', '111aaa') self.assertFalse(repeat_error, 'case执行了')
class FirstCase(unittest.TestCase): """ case层 """ @classmethod def setUpClass(cls) -> None: cls.log = UserLog() cls.logger = cls.log.get_log() def setUp(self): self.register_b = RegisterBusiness() self.logger.info("this is textt") # self.file_name = selenium_driver.get_picture('re') # self.code_text = selenium_driver.code_base64(self.file_name) def tearDown(self): time.sleep(2) for method_name, error in self._outcome.errors: if error: case_name = self._testMethodName error_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) case_error_path = os.path.join(error_path + "/report/" + case_name + '.png') selenium_driver.img_png(case_error_path) selenium_driver.close_driver() @classmethod def tearDownClass(cls) -> None: cls.log.close_log() # 邮箱、用户名、密码、验证码、错误信息元素、错误提示信息 def test_register_email_error(self): email_error = self.register_b.register_email_error('qweqwe', '程柔位', '123456', 'code1') self.assertFalse(email_error) # 断言是否为false def test_register_username_error(self): name_error = self.register_b.register_name_error('*****@*****.**', '1', '123456', 'code1') self.assertFalse(name_error) def test_register_password_error(self): password_error = self.register_b.register_password_error('*****@*****.**', 'chengtouwei', '1234', 'code1') self.assertFalse(password_error) def test_register_code_error(self): code_error = self.register_b.register_code_error('*****@*****.**', 'chengtouwei', '123456', 'code1') self.assertFalse(code_error) def test_register_success(self): success = self.register_b.register_succes('*****@*****.**', 'chengtouwei', '123456', 'code1') self.assertTrue(success)
class FirstCase(unittest.TestCase): def setUp(self): log = UserLog() # 实例化日志 logger = log.get_log() # 获得logger对象 warnings.simplefilter('ignore', ResourceWarning) self.driver = webdriver.Chrome() self.driver.get('http://www.5itest.cn/register') self.driver.maximize_window() logger.info('this is chrome') # 打印debug级别的日志 log.close_handle() # 移除handle self.register = RegisterBusiness(self.driver) self.file_name = 'D:/Imooc_project/yztp/yzm.png' def tearDown(self): time.sleep(2) for method_name, error in self._outcome.errors: # self._outcome.errors用于获取案例中的失败 if error: case_name = self._testMethodName # _testMrthodName用于获取用例名 file_path = os.path.join( os.path.dirname(os.path.dirname( os.path.realpath(__file__))) + r'\tp' + '\\' + case_name + '.png') # 报告放的位置 self.driver.save_screenshot(file_path) self.driver.quit() def test_login_email_error(self): email_error = self.register.register_email_error( '*****@*****.**', 'test111', '123123', self.file_name) self.assertFalse(email_error) def test_login_username_error(self): name_error = self.register.register_name_error('*****@*****.**', 't', '123123', self.file_name) self.assertFalse(name_error) def test_login_code_error(self): code_error = self.register.register_code_error('*****@*****.**', 'test111', '123123', self.file_name) self.assertFalse(code_error) def test_login_password_error(self): password_error = self.register.register_password_error( '*****@*****.**', 'test111', '12', self.file_name) self.assertFalse(password_error)
class FirstCase: def __init__(self,url="http://www.5itest.cn/register"): driver = webdriver.Chrome() driver.maximize_window() driver.get(url) self.regsiter_b = RegisterBusiness(driver) def test_register_email_error(self): email_error = self.regsiter_b.register_email_error("123","user123","111111","test1") if email_error: print("pass") else: print("fail") def test_register_name_error(self): name_error = self.regsiter_b.register_name_error("*****@*****.**","u","111111","test1") if name_error: print("pass") else: print("fail") def test_register_password_error(self): passwd_error = self.regsiter_b.register_password_error("*****@*****.**","user123","1","test1") if passwd_error: print("pass") else: print("fail") def test_register_code_error(self): code_error = self.regsiter_b.register_code_error("*****@*****.**","user123","111111","test1") if code_error: print("pass") else: print("fail") def test_register_success(self): success = self.regsiter_b.register_success("user123","user123","111111","test1") if success: print("pass") else: print("fail")
class FirstCase(unittest.TestCase): #所有case的前置条件 @classmethod def setUpClass(cls): #保存验证码截图的路径(最好用相对路径,绝对路径当换一个环境就不一定正确了) image_file_path = os.path.join( os.path.dirname(os.getcwd()) + "/bg-image/register_code.png") #因为下面几乎每个函数都要用到,所以写在前置函数里方便使用 #前置函数就类似于构造函数 cls.file_name = image_file_path print("所有case的前置") #所有case的后置条件 @classmethod def tearDownClass(cls): print("所有case的后置") #每个case的前置条件 #前置放driver,就不需要构造方法了 #每执行一次case都需要重启浏览器 def setUp(self): self.driver = webdriver.Chrome() self.driver.get('http://www.5itest.cn/register') self.registerb = RegisterBusiness(self.driver) print("执行了当前case的前置条件") #每个case的后置条件 #后置,每执行一次case都需关闭浏览器 def tearDown(self): time.sleep(5) #拿到报错信息(有则显示报错信息,无则为None,._outcome.errors返回的是个列表 for method, error in self._outcome.errors: #如果有报错信息 if error: #先拿到报错时的用例名称 case_name = self._testMethodName #文件路径,以case函数名称命名(一定要注意/是否有遗漏) file_path = os.path.join(os.getcwd() + "/report/" + case_name + ".png") #截图报错时的页面,并保存 self.driver.save_screenshot(file_path) else: return None self.driver.close() print("执行了当前case的后置条件") #错误邮箱用例 def test_login_email_error(self): email_error = self.registerb.register_email_error( '*****@*****.**', 'abc123', '111111', self.file_name) time.sleep(5) #assert函数的使用,相当于用if语句进行判断 self.assertFalse(email_error, 'case01-出错了') #下面和上面作用相似,但用assert更简洁 ''' if email_error == True: print("case01-错误邮箱执行失败") else: print("case01-错误邮箱执行成功") ''' #错误用户名用例 def test_login_username_error(self): username_error = self.registerb.register_username_error( '@111', '11', '111111', self.file_name) time.sleep(5) self.assertFalse(username_error, 'case02-出错了') #错误密码用例 def test_password_error(self): password_error = self.registerb.register_password_error( '@111', 'abc123', '1', self.file_name) time.sleep(5) self.assertFalse(password_error, 'case03-出错了') #错误验证码用例 def test_login_code_error(self): code_error = self.registerb.register_code_error( '@111', 'abc123', '111111', self.file_name) time.sleep(5) self.assertFalse(code_error, 'case04-出错了') #字段均正确,注册成功用例 def test_login_success(self): success = self.registerb.register_success('*****@*****.**', 'abcffffff23', '111111', self.file_name) time.sleep(5) self.assertTrue(success, 'case05-出错了')