python接口自动化(三十五)-封装与调用--流程类接口关联(详解)

简介: 流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。

简介


  

流程相关的接口,主要用 session 关联,如果写成函数(如上篇),s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。在这里我们还是以博客园为例,带着小伙伴们实践一下。


接口封装大致流程



1、在接口测试中,有些接口经常会被用到比如登录的接口,这时候我们可以每个接口都封装成一个方法,如:登录、保存草稿、发布随笔、删除随笔,这四个接口就可以写成四个方法


2、接口封装好了后,后面我们写用例那就直接调用封装好的接口就行了,有些参数,可以参数化,如保存草稿的 title 和 body 两个参数是动态的。调用时直接将其传入方法中,就可以了


3、像这种流程类的接口,后面的会依赖前面的,我们就可以通过 session将其关联起来


4、将自动化测试脚本保存到 login.py文件中,这样就可以是脚本和业务分离


实战实例



第一步:在pycharm中左上角点击“file”,然后点击“New Project”,修改名字为“jiekou”,点击“Create”


1232840-20190514103928018-1244794824.png


第二步:在jiekou文件夹下,分别创建python package分别命名为“blog”和“case”


1232840-20190514104326199-981270842.png


第三步:都完成后,如下

1232840-20190514104722073-1586666121.png


第四步:在login.py文件中编辑自动化测试脚本

1232840-20190514113432412-753092381.png


用例导入接口



1、导入上面 login.py 模块写的接口自动化测试脚本


1232840-20190514114940669-1040742021.png


2、在test_01.py中编辑测试用例


1232840-20190514113853908-1880419913.png


参考代码



login.py文件


# coding=utf-8
  # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
  # 2.注释:包括记录创建时间,创建人,项目名称。
  '''
  Created on 2019-5-15
  @author: 北京-宏哥
  Project:学习和使用封装与调用--流程类接口关联
  '''
# 3.导入模块
 import requests
 # 禁用安全请求警告
 import urllib3
 urllib3.disable_warnings()
 import warnings
 warnings.simplefilter("ignore", ResourceWarning)
 class Blog():
     def __init__(self, s):
         s = requests.session()  # 全局参数
         self.s = s
     def login(self):
         '''登录接口'''
         url = "http://localhost:8080/jenkins/j_acegi_security_check"
         headers = {
             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"
         }  # get方法其它加个ser-Agent就可以了
         d = {"j_username": "admin",
              "j_password": "111111",
              "from": "",
              "Submit": u"登录",
              "remember_me": "on"
              }
         s = requests.session()
        r = s.post(url, headers=headers, data=d)
         # print (r.content.decode('utf-8'))
         # 正则表达式提取账号和登录按钮
         import re
         t = re.findall(r'<b>(.+?)</b>', r.content.decode('utf-8'))  # 用python3的这里r.content需要解码
         print(t[0])
         print(t[1])
     def get_postid(self, r2_url):
         '''正则表达式提取'''
         import re
         postid = re.findall(r"postid=(.+?)&", r2_url)
         print(postid)  # 这里是 list []
         # 提取为字符串
         print(postid[0])
         return postid[0]
     def save(self, title, body):
         '''保存草稿箱:
         参数 1:title # 标题
         参数 2:body # 中文'''
        url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"
         d = {"__VIEWSTATE": "",
              "__VIEWSTATEGENERATOR": "FE27D343",
              "Editor$Edit$txbTitle": title,
              "Editor$Edit$EditorBody": "<p>%s</p>" % body,
              "Editor$Edit$Advanced$ckbPublished": "on",
              "Editor$Edit$Advanced$chkDisplayHomePage": "on",
             "Editor$Edit$Advanced$chkComments": "on",
             "Editor$Edit$Advanced$chkMainSyndication": "on",
              "Editor$Edit$lkbDraft": "存为草稿",
              }
         r2 = self.s.post(url2, data=d, verify=False)  # 保存草稿箱
         print(r2.url)
         return r2.url
     def del_tie(self, postid):
         '''删除帖子'''
         del_json = {"postId": postid}
         del_url = "https://i.cnblogs.com/post/delete"
         r3 = self.s.post(del_url, json=del_json, verify=False)
         print(r3.json()["isSuccess"])
         return r3.json()
 if __name__ == "__main__":
     s = requests.session()
     Blog(s).login()


test_01.py


 # coding=utf-8
  # 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行
 # 2.注释:包括记录创建时间,创建人,项目名称。
 '''
  Created on 2019-5-15
  @author: 北京-宏哥
  Project:学习和使用封装与调用--流程类接口关联
  '''
 # 3.导入模块
 import unittest
 import requests
 import warnings
 from blog.login import Blog
 class Test(unittest.TestCase):
     def setUp(self):
        warnings.simplefilter("ignore", ResourceWarning)
         s = requests.session()
         self.blog = Blog(s)
      def test_login_01(self):
        self.blog.login()
        print (result)
        print (type(result))
        print (result["success"] )# 登录,获取结果
        self.assertEqual(result["success"] , True) # 拿结果断言
     def test_del_02(self):
         # 第一步:登录
         self.blog.login()
         # 第二步:保存
         r2_url = self.blog.save(title="北京-宏哥,流程类接口关联", body="学习和使用封装与调用--流程类接口关联")
         pid = self.blog.get_postid(r2_url)
         # 第三步:删除
         result = self.blog.del_tie(pid)
         print(result)
         self.assertEqual(result["isSuccess"], True)
 if __name__ == "__main__":
     unittest.main()


小结


  

流程相关的接口的封装和调用给各位小伙伴暂且介绍到这里,因为博客园的登陆机制改变,小伙伴们可以用jenkins的仿照这一篇实战演练一下,下一篇我会带你们一起做一下。


欲知后事发展,请听下回分解!!

相关文章
|
7天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
19 3
|
13天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
14天前
|
运维 监控 Linux
自动化运维:如何利用Python脚本优化日常任务##
【10月更文挑战第29天】在现代IT运维中,自动化已成为提升效率、减少人为错误的关键技术。本文将介绍如何通过Python脚本来简化和自动化日常的运维任务,从而让运维人员能够专注于更高层次的工作。从备份管理到系统监控,再到日志分析,我们将一步步展示如何编写实用的Python脚本来处理这些任务。 ##
|
20天前
|
JSON 测试技术 持续交付
自动化测试与脚本编写:Python实践指南
自动化测试与脚本编写:Python实践指南
24 1
|
28天前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
1月前
|
索引 Python
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
17 1
|
1月前
|
Java C++ Python
Python基础---类
【10月更文挑战第10天】Python类的定义
21 2
|
1月前
|
运维 监控 网络安全
自动化运维的魔法:如何用Python简化日常任务
【10月更文挑战第9天】在数字时代的浪潮中,运维人员面临着日益增长的挑战。本文将揭示如何通过Python脚本实现自动化运维,从而提高效率、减少错误,并让运维工作变得更具创造性。我们将探索一些实用的代码示例,这些示例将展示如何自动化处理文件、监控系统性能以及管理服务器配置等常见运维任务。准备好让你的运维工作升级换代了吗?让我们开始吧!
|
11天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
WK
|
1月前
|
Python
Python类命名
在Python编程中,类命名至关重要,影响代码的可读性和维护性。建议使用大写驼峰命名法(如Employee),确保名称简洁且具描述性,避免使用内置类型名及单字母或数字开头,遵循PEP 8风格指南,保持项目内命名风格一致。
WK
13 0