心之所有
想学习的可以互相沟通,互相学习,刚开始学。有什么问题可以沟通

导航

 

一、自动化测试用例

 

 2、在自动化测试里面,不能对环境造成任何的破坏,也就是说,执行前和执行后,环境都是一样的 ,不能因为执行了自动化测试的case,导致产生了垃圾数据。

 

测试固件只执行一次

测试套件是按顺序执行

三、、测试用例注意事项如下:

1、在一个测试类里面,每一个测试方法都是以test开头的,test不能是中间或者尾部,必须是开头,建议test_
2、每一个测试用例方法都应该有注释信息,这样在测试报告就会显示具体的测试点的检查点
3、在自动化测试中,每个测试用例都必须得有断言,无断言的自动化测试用例是无效的
4、最好一个测试用例方法对应一个业务测试点,不要多个业务检查点写一个测试用例
5、如果涉及到业务逻辑的处理,最好把业务逻辑的处理方法放在断言前面,这样做的目的是不要因为业务逻辑执行错误导致断言也是失败
6、测试用例名称最好规范,有约束
7、是否先写自动化测试的测试代码,在使用自动化测试方式写,本人觉得没必要,毕竟能够做自动化测试的都具备了功能测试的基本水平,所以没必要把一个业务的检查点写多次,浪费时间和人力成本

 

四、参数化:

安装一个库:pip3 install parameterized

前提条件:

1、相同的步骤

2、不同的测试场景

import unittest
from parameterized import parameterized,param

def add(a,b):
	return a+b

class AddTest(unittest.TestCase):
	def setUp(self):
		pass
	def tearDown(self):
		pass

	@parameterized.expand([
		param(1,1,2),
		param(2,2,4),
		param(1.0,1.0,2.0),
		param('hi',' chen','hi chen')
	])
	def test_add(self,a,b,result):
		self.assertEqual(add(a,b),result)

if __name__ == '__main__':
    unittest.main(catchbreak=2)

  参数化实战

1、新浪邮箱

import unittest
from parameterized import parameterized,param
from selenium import webdriver
import time as t

class UiTest(unittest.TestCase):
	def setUp(self):
		self.driver=webdriver.Chrome()
		self.driver.maximize_window()
		self.driver.get('https://mail.sina.com.cn/#')
		self.driver.implicitly_wait(30)

	def tearDown(self):
		self.driver.quit()


	@parameterized.expand([
		param('','','请输入邮箱名'),
		param('chengxin@sina.com','saddas','登录名或密码错误'),
		param('dsadsa','sdsfd','您输入的邮箱名格式不正确')
	])

	def test_sina_login(self,username,password,divTest):
		self.driver.find_element_by_id('freename').send_keys(username)
		self.driver.find_element_by_id('freepassword').send_keys(password)
		self.driver.find_element_by_link_text('登录').click()
		t.sleep(3)
		error=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
		self.assertEqual(error.text,divTest)

if __name__ == '__main__':
    unittest.main(catchbreak=2)

  执行以上代码,结果为:

 

 2、网易邮箱

 

 3、qq邮箱

class sinaTest(unittest.TestCase):
	def setUp(self) -> None:
		self.driver=webdriver.Chrome()
		self.driver.maximize_window()
		self.driver.get('https://mail.qq.com/')
		self.driver.implicitly_wait(30)

	def tearDown(self) -> None:
		self.driver.quit()

	@parameterized.expand([
	    param('2327829391@qq.com','afff','你输入的帐号或密码不正确,请重新输入。'),
	    param('2327829391@qq.com', '', '你还没有输入密码!')
    ])

	def test_qq_login(self,username,password,b):
		self.driver.switch_to.frame('login_frame')
		self.driver.find_element_by_xpath('//*[@id="u"]').send_keys(username)
		self.driver.find_element_by_xpath('//*[@id="p"]').send_keys(password)
		t.sleep(3)
		self.driver.find_element_by_id('login_button').click()
		t.sleep(3)
		error = self.driver.find_element_by_xpath('//*[@id="err_m"]')
		self.assertEqual(error.text,b)


if __name__ == '__main__':
    unittest.main(verbosity=2)

  执行以上代码,结果为:

 

 

5、测试分离

较少重复代码,使用继承的方式调用父类方法

from selenium import  webdriver
import unittest
import time as t

class Init(unittest.TestCase):
      def setUp(self)-> None:
         '''初始化'''
         self.driver=webdriver.Chrome()
         self.driver.maximize_window()
         self.driver.get('https://mail.sina.com.cn/')
         self.driver.implicitly_wait(30)

      def tearDown(self)-> None:
         self.driver.quit()

class TestDown(Init):
   def test_sina_001(self):
      isLogin=self.driver.find_element_by_id('store1')
      self.assertEqual(isLogin.is_selected(),True)

   def test_sina_002(self):
      self.driver.find_element_by_link_text('登录').click()
      t.sleep(3)
      divText=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]')
      self.assertEqual(divText.text,'请输入邮箱名')

   def test_sina_003(self):
      self.driver.find_element_by_id('freename').send_keys('zhaoxu@sina.com')
      self.driver.find_element_by_link_text('登录').click()
      t.sleep(3)
      divText=self.driver.find_element_by_xpath('/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[2]')
      self.assertEqual(divText.text,'请输入密码')
   def test_sina_004(self):
      nowHandler=self.driver.current_window_handle
      self.driver.find_element_by_link_text('注册')
      allHandler=self.driver.window_handles
      for handler in allHandler:
         if nowHandler!=handler:
            self.driver.switch_to.window(handler)
            self.assertEqual(self.driver.current_url,'https://mail.sina.com.cn/register/regmail.php')
            self.driver.close()
      self.driver.switch_to.window(nowHandler)
      t.sleep(3)

if __name__ == '__main__':
    unittest.main(verbosity=2)

  

posted on 2021-08-18 18:13  橙橙的橙  阅读(72)  评论(0)    收藏  举报