多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

web UI接口自动化测试框架介绍

更新时间:2021-09-13 01:36:08 作者:admin 浏览:225

web UI接口自动化测试框架介绍

  1. case

  1.1 app(APP与web可以使用同一套测试框架,后续会详细说明)

  1.2 web

  web下有具体的模块用例,一个模块的case对应一个py文件,如首页模块、购物车模块各自对应一个py文件(如果模块较大,可继续细分为多个小模块,尽量不要让1个py文件行数过多)

  TestCase里面的方法主要有3部分

  · setUp:初始化

  · test方法:具体业务实现

  · tearDown:清理/释放(截图、退出)

  Unittest框架执行顺序:setUp->test->tearDown

  · 每执行1条测试用例之前,都要先执行setUp方法

  · 每执行1条测试用例之后,都要再执行tearDown方法

  · test里面报错了也会继续走tearDown

  · 这三个函数名是unittest框架固定的,不能修改(大小写也不能改)

web UI接口自动化测试框架介绍

  (1)setUp:初始化

  def setUp(self): # 初始化

  # self关键字是类的一个实例化对象(只能用self表示),self.driver就是类的一个变量,这个变量就能被其他方法所认识

  # 平常在一个方法中,定义的变量是局部变量,只能被这个方法认识

  self.driver = webdriver.Chrome() # 初始化driver

  self.driver.get("http://101.133.169.100/yuns/index.php") # 打开项目地址

  self.driver.maximize_window() # 窗口最大化

  time.sleep(5)

  print("starttime:" + time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))) # 打印开始时间

  # strftime:格式化时间的一个方法 time.localtime(time.time()):拿到了当前的时间,并将其格式化

  (2)test方法:具体业务实现

  · 一个test方法对应一个测试用例

  · 包含的使用场景:搜索框中输入搜索内容后,判断返回结果是否包含了搜索的内容,如搜索女装,出现包含“女装”的商品

  · 每一条自动化用例都要有一个断言结果

  断言方式:

  def testShouye01_01(self):

  '''测试首页导航文案显示是否正常'''

  Mylogin(self.driver).login()

  firstPageNavi = self.driver.find_element_by_xpath("//div[@class='top']/span") #定位控件

  loginText = self.driver.find_element_by_css_selector("div.login>a:nth-child(1)")

  regisText = self.driver.find_element_by_css_selector("div.login>a:nth-child(3)")

  #断言结果,使用assertEqual判断实际结果与预期结果是否一致

  #如果一致,用例pass,如果不一致,直接报错,代码不会再往下继续执行

  self.assertEqual("亲,欢迎您来到云商系统商城!",firstPageNavi.text) #判断逗号前后内容是否相等,前后顺序可调换

  self.assertEqual("17731990979", loginText.text)

  self.assertEqual("退出", regisText.text)

  self.assertNotEqual("dd", regisText.text) #assertNotEqual:断言不相等

  #assertIn:包含 assertNotIn:不包含

  self.assertIn("云商系统商城",firstPageNavi.text) #断言逗号后是否包含逗号前的内容

  #如果返回的是true,则assertTrue断言通过,如果返回的是false,则失败

  self.assertTrue(self.driver.find_element_by_xpath("//div[@class='top']/span").is_displayed()) #判断控件是否显示出来

  self.assertFalse(firstPageNavi.is_displayed()) #判断不存在

  #自创断言方式

  if loginText.text == "177****0979":

  print("等于")

  else:

  print("不等于")

  self.driver.find_element_by_xpath("王麻子") #故意写一个错误语句,不相等时就会报错

  (3) tearDown:清理/释放(截图、退出)

  def tearDown(self): #释放/清理

  filedir = "D:/test/screenshot/"

  #如果电脑没有上面的路径,就创建

  if not os.path.exists(filedir):os.makedirs(os.path.join('D:/', 'test', 'screenshot'))

  #打印结束时间

  print("endTime:" + time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())))

  screen_name = filedir + time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time())) + ".png"

  self.driver.get_screenshot_as_file(screen_name)

  #截图,截图名称(唯一化):截图保存路径+截图时间+.png

  self.driver.quit() #退出浏览器

  截图的意义:一条用例执行结果不论是通过还是失败,都需要通过teardown,如果这条用例执行失败、报错,此时截的图就是报错时的页面。截图之前先打印了结束时间,可以通过这个时间找到对应的截图。

  2. public

  放常用的封装的公用的业务模块,比如登录模块,使用时直接调用

  如封装登录模块,代码如下:

  import time

  class Mylogin(object):

  def __init__(self, driver): #封装了一个init方法

  self.driver = driver #将driver赋值给self.driver

  def login(self): #封装登录方法

  self.driver.find_element_by_name("username").send_keys("156********")

  self.driver.find_element_by_name("password").send_keys("123456")

  self.driver.find_element_by_xpath("//div[@class='el-form-item']/div[1]").click()

  time.sleep(5)

  调用方法:

  Mylogin(self.driver).login()

  3. report

  放自动化测试报告(执行结果通过/失败),运行testrunner.py后自动生成HTML报告

  4. testrunner

  批量运行所有case,部分截图如下:

  5. 运行

  运行所有py文件:运行时不能以unittests in形式去运行,要以py形式运行。运行后会生成一个html报告。

  报告截图如下:

  运行后在pycharm里也可看到运行结果:

  代表成功 F代表断言失败 E代表定位不到控件

  · 运行单个py文件:以unittests in形式运行,运行结果会呈现在pycharm里面

  · 如果运行方式不对,可到运行编辑器中设置

  以上是关于web UI接口自动化测试框架的介绍,由多测师亲自撰写。  http://www.aichudan.com/

联系电话

17727591462

返回顶部