Pytest测试框架基础--常用功能介绍

  本节主要系统介绍一下Pytest在自动化测试中常用的一些用法,自己编写了一个自动化测试脚本,附在末尾

  一、断言

  学过unittest的同学知道,也是有断言方法的,但是pytest与其有点不同,更为简单。

  判断a是否与b相等  assert a==b

  判断a是否存在b中 assert a in b

  判断a与b不相等 assert a != b

 

  二、指定顺序执行用例

  测试用例的执行顺序是按照字母顺序执行的,如果想指定其执行顺序,可以使用order用法。

  首先需要安装pytest-ordering库,然后在测试用例上面调用pytest.mark.run(order=1),数字字母越小越先执行。

  @pytest.mark.run(order=1)

  def test_login_account_ok(self):

      self.driver.send_account('account')
  self.driver.send_password('pwd')
  self.driver.btn_click()
  time.sleep(1)
  assert self.driver.get_current_url() == 'http://ygc.com'

  三、参数化

  
在编写测试用例时候,只有某一个值进行改变,可以将此值进行参数化,有多少个值执行多少次。
  如 百度搜索:selenium,自动化,123,空置

  @pytest.mark.parametrize('search_word',['selenium','自动化','123',' '])
  def test_baidu(self,search_word):
    driver.find_element_by_id('kw').
clear()
    driver.find_element_by_id('kw').send_keys(search_word)
    driver.find_element_by_id('su').click()

  备注:以上测试用例会执行4次,每次百度输入框输入的值分别为selenium,自动化,123,空;测试用例的参数必须要与parameterize里面的参数一致

  如果是需要传入多个参数,比如登录的用户名,密码 可以写为:
  @pytest.mark.parametrize('account,pwd',[('admin','123456'),('admin','111111'),('admin','')])
  
  def test_login(self,account,pwd):
    driver.find_element_by_id('account').
clear()
    driver.find_element_by_id('account').send_keys(account)
    driver.find_element_by_id('pwd').clear()
    driver.find_element_by_id('pwd').send_keys(pwd)
    driver.find_element_by_id('su').click()

  
四、不执行某个测试用例

  
如果想要某个测试用例不执行,可以加上@pytest.mark.skip,这样某个测试用例就会跳过执行。

  五、测试用例前后执行
  
在执行测试用例之前的预置条件以及执行完测试用例的后置条件,比如,在测试网站时候,通常需要先进行登录,测试完之后退出登录,关闭浏览器。
  setup/teardown
  def setup(def):
    print("before testing")

  def teardown(def):
    print("Finish testing")


  每执行一个测试用例,就会执行一次setup,teardown.比如有3个测试用例,那么对应的setup,teardown也会执行三遍。
  如果只想执行一遍,那么可以使用 setup_class,teardown_class,这样只会在测试用例之前执行一次setup_class,所有测试用例执行完成后执行一次teardown_class

 
 

  

上一篇:windows 本地测试spark streaming + kafka direct api


下一篇:[微信小程序直播平台开发]___(一)介绍与流程