独立脚本pytest封装

1、类封装准备工作

建议先在普通的.py文件中调用要封装的测试脚本

2、错误异常处理

方法1:捕获异常-抛出异常-处理异常

try:
    可能会报错的代码
except Exception as e :
    print (e)
finally:
    报错后要运行的处理

方法2:重新修改脚本

3、pytest脚本优化,不同的测试方法,有相同的冗余代码

1.前置方法:每个测试方法前都需要进行的处理

setup_method,只对类的内部方法有效,class Testxxx,def testxxx(self)

2.后置方法:每个测试方法执行后,要完成的一些回收工作

teardown_method,只对类的内部方法有效,class Testxxx,def testxxx(self)

3.数据驱动法技术:

标签:@pytest.mark.paramtrize

语法说明:@pytest.mark.paramtrize('参数名1','参数名2',([参数值1,参数值2])

实例:@pytest.mark.parametrize('uname,pwd,state', (["atstudy", "51testing", 1], ["atstudy1", "51testing", 0]))

4.传入的语法

普通方法:def test_xxx(参数名1,参数名2,参数名3)

类方法:def  test_xxx(self,参数名1,参数名2,参数名3)

注意:在方法体的声明中要写出定义的全部参数名   

4、pytest异常处理-抛出异常脚本     

from selenium import webdriver

# 1、创建测试类
class Test_Django_Login():
# 2、创建测试方法
#   正常登录测试方法:用户名不存在
#   登录初始化
    def setup_method(self):
        self.url="http://testplt.share.atstudy.com/admin/login/?next=/admin/"
        self.driver=webdriver.Chrome()
        self.driver.get(self.url)
    def test_login_01(self):
        self.driver.find_element_by_name('username').send_keys('atstudy')
        self.driver.find_element_by_name('password').send_keys('51testing')
        self.driver.find_element_by_xpath('//*[@id="login-form"]/div[3]/input').click()
        # 检查点
        result=self.driver.find_element_by_xpath('//*[@id="content-main"]/div/table/caption/a').text
        print(result)
        # 3、通过断言进行判断
        # self.assertIn("测试平台",result)
        assert result=="测试平台"


        # 异常登录测试方法
    def test_login_02(self):
        # self.url="http://testplt.share.atstudy.com/admin/login/?next=/admin/"
        self.driver.find_element_by_name('username').send_keys('atstudy1')
        self.driver.find_element_by_name('password').send_keys('51testing')
        self.driver.find_element_by_xpath('//*[@id="login-form"]/div[3]/input').click()
         # 检查点
        # ************************************
        # 异常处理方法1通过try-except进行异常处理
        try:
            result= self.driver.find_element_by_xpath('//*[@id="content-main"]/div/table/caption/a').text
            print(result)
            assert result=="测试平台"
        except Exception as e:
            print(e)
        finally:
            result= self.driver.find_element_by_xpath('//*[@id="content"]/p').text
            # 断言:包含对比
            assert "请输入" in result

5、pytest异常处理-在知道预期结果的情况下,修改脚本,url进行对比

     

from selenium import webdriver

# 1、创建测试类
class Test_Django_Login():
# 2、创建测试方法
#   正常登录测试方法:用户名不存在
#   登录初始化
    def setup_method(self):
        self.url="http://testplt.share.atstudy.com/admin/login/?next=/admin/"
        self.driver=webdriver.Chrome()
        self.driver.get(self.url)
    def test_login_01(self):
        self.driver.find_element_by_name('username').send_keys('atstudy')
        self.driver.find_element_by_name('password').send_keys('51testing')
        self.driver.find_element_by_xpath('//*[@id="login-form"]/div[3]/input').click()
        # 检查点
        result=self.driver.find_element_by_xpath('//*[@id="content-main"]/div/table/caption/a').text
        print(result)
        # 3、通过断言进行判断
        # self.assertIn("测试平台",result)
        assert result=="测试平台"


        # 异常登录测试方法
    def test_login_02(self):
        # self.url="http://testplt.share.atstudy.com/admin/login/?next=/admin/"
        self.driver.find_element_by_name('username').send_keys('atstudy1')
        self.driver.find_element_by_name('password').send_keys('51testing')
        self.driver.find_element_by_xpath('//*[@id="login-form"]/div[3]/input').click()
             # 异常处理方法3改变检查点:进行url的对比
        # 获取当前页面的url
        result=self.driver.current_url
        print(result)
        assert result==self.url
    def teardown_method(self):
        self.driver.close()

6、pytest异常处理-在知道预期结果的情况下,修改脚本,改变检查点,进行错误信息对比

       # 异常处理方法2改变检查点:进行错误信息比对
        result= self.driver.find_element_by_xpath('//*[@id="content"]/p').text
        # 断言:包含对比
        assert "请输入" in result

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在编写pytest脚本时,可以通过封装函数和类的方式来提高代码的可重用性和可维护性。下面是一些封装pytest脚本的方法: 1. 函数封装:将一组相关的测试步骤封装到一个函数中。这样可以将相似的测试逻辑封装起来,提高代码的复用性。例如: ```python import pytest def test_login(): # 登录步骤 def test_logout(): # 登出步骤 def test_search(): # 搜索步骤 ``` 在上述示例中,每个函数代表一个独立的测试用例,其中包含了特定的测试步骤。 2. 类封装:根据测试场景的复杂度,可以使用类来封装一组相关的测试用例。这样可以更好地组织和管理测试代码。例如: ```python import pytest class TestLogin: def test_valid_login(self): # 有效登录步骤 def test_invalid_login(self): # 无效登录步骤 class TestSearch: def test_basic_search(self): # 基本搜索步骤 def test_advanced_search(self): # 高级搜索步骤 ``` 在上述示例中,每个类代表一个测试场景,其中包含了多个相关的测试用例。 3. 重用函数和类:如果有一些通用的测试逻辑需要在多个测试用例中使用,可以将其封装独立的函数或类,并在需要时进行调用。这样可以减少重复代码,提高代码的可维护性。 ```python import pytest def login(username, password): # 登录步骤 def test_valid_login(): login("valid_username", "valid_password") # 其他测试步骤 def test_invalid_login(): login("invalid_username", "invalid_password") # 其他测试步骤 ``` 在上述示例中,`login()`函数封装了登录的测试步骤,并在多个测试用例中进行调用。 通过函数和类的封装,可以将测试代码组织得更好,提高代码的可读性、可重用性和可维护性。希望这些提示对你有帮助!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值