提取html工具封装和应用

BeautifulSoup库和介绍

BeautifulSoup使用

1、导包
2、实例化
3、调⽤⽅法

# 1、导包
from bs4 import BeautifulSoup
html = """
 <html>
 <head>
 <title>⿊⻢程序员</title>
 </head>
 <body>
 <p id="test01">软件测试</p>
 <p id="test02">2020年</p>
 <a href="/api.html">接⼝测试</a>
 <a href="/web.html">Web⾃动化测试</a>
 <a href="/app.html">APP⾃动化测试</a>
 </body>
 </html>
"""
# 2、获取bs对象 告诉BeautifulSoup类,你要解析的是hmtl格式
bs = BeautifulSoup(html, "html.parser")
# 3、调⽤⽅法
"""
 重点:
 1、查找所有标签 bs.find_all("标签名") == 元素的集合 == ["元素1","元素2"]
 2、查找属性 元素.get("属性名")
"""
for a in bs.find_all("a"):
 print(a.get("href"))

BeautifulSoup重点方法

1、查找所有标签 bs.find_all(“标签名”) == 元素的集合 == [“元素1”,“元素2”]
2、查找属性 元素.get(“属性名”)

BeautifulSoup其他方法

# 4、扩展其他⽅法
# 获取单个元素 bs.标签名
print(bs.a)
# 获取⽂本
print(bs.a.string)
# 获取属性
print(bs.a.get("href"))
# 获取标签名
print(bs.a.name)

认证参数化实现

创建json文件

在这里插入图片描述

{
  "img_code": [
    {
      "desc": "获取图片验证码成功(随机小数)",
      "random": 0.123,
      "expect_code": 200
    },
    {
      "desc": "获取图片验证码成功(随机整数)",
      "random": 123,
      "expect_code": 200
    },
    {
      "desc": "获取图片验证码失败(随机数为空)",
      "random": "",
      "expect_code": 404
    },
    {
      "desc": "获取图片验证码失败(随机数为字符串)",
      "random": "123hello",
      "expect_code": 400
    }
  ],
  "recharge":[
    {
      "desc": "后台充值响应成功",
      "valicode": 8888,
      "expect_text": "OK"
    },
    {
     "desc": "后台充值响应成功",
      "valicode": 8889,
      "expect_text": "验证码错误"
    }
  ]
}

导包(参数化)

在这里插入图片描述

编写测试用例

编写你的测试用例,使用 @parameterized.expand 装饰器来指定参数化的测试数据。

在这里插入图片描述

技术难点–判断验证码不同

1、充值需要判断验证码不同,执⾏步骤和结果不同
思路:
1、调⽤图⽚验证码–>记录cookie
2、调⽤充值接⼝(验证码)
3、判断验证码为8888
条件成立:1.提取响应数据 2.三方充值 3.断言
4、否则–直接断言

# 5.充值接口测试
    @parameterized.expand(read_json("approve_trust.json","recharge"))
    def test05_recharge(self, valicode,expect_text):
        try:
            #调用图片验证码
            self.approve.api_img_code(1231123)
            # 调用认证接口
            r = self.approve.api_recharge(valicode)
            log.info("查询认证状态返回数据:{}".format(r.json()))
            if valicode == 8888:
                # 断言
                self.assertIn("form", r.text)
                log.info("断言通过!")
                # 三方开户
                result = parser_html(r)
                r = self.session.post(url=result[0], data=result[1])
                print("三方充值的结果为:", r.text)
                self.assertIn(expect_text, r.text)
                log.info("接口执行结果为:{}".format(r.text))
            else:
                self.assertIn(expect_text, r.text)
                print("验证码错误为:",r.text)
        except  Exception as e:
            # 日志
            log.error("断言错误! 原因:{}".format(e))
            # 异常
            raise

相关推荐

  1. C# hslcommunication 与PLC Modbus 连接函数封装应用

    2024-03-29 05:10:02       31 阅读
  2. JDBC高级篇-JDBC工具类、DAO封装BaseDAO工具

    2024-03-29 05:10:02       15 阅读
  3. 封装Redis工具

    2024-03-29 05:10:02       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-29 05:10:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-29 05:10:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-29 05:10:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-29 05:10:02       20 阅读

热门阅读

  1. ubuntu18.04找不到网络适配器,无法连接网络

    2024-03-29 05:10:02       17 阅读
  2. CUDA从入门到放弃(七):流( Streams)

    2024-03-29 05:10:02       17 阅读
  3. SHELL(01)

    2024-03-29 05:10:02       17 阅读
  4. 本人拟采购开发工具

    2024-03-29 05:10:02       16 阅读
  5. 幽默记忆TCP/UDP/DNS/三次握手

    2024-03-29 05:10:02       16 阅读
  6. IDEA 搭建 Otter 源码 DEBUG 环境

    2024-03-29 05:10:02       22 阅读
  7. nginx 设置跨域

    2024-03-29 05:10:02       18 阅读
  8. 钓鱼_精准定位GPS

    2024-03-29 05:10:02       20 阅读
  9. Typescript再学习-类(8)

    2024-03-29 05:10:02       16 阅读
  10. C++如何在const函数修改成员变量的值

    2024-03-29 05:10:02       18 阅读