精华内容
下载资源
问答
  • 课程简介: 课程介绍 你是否在寻找...现为技术架构师 新书“Python3+Selenium3自动化测试项目实战”作者 【课程咨询】 作者联系QQ:2574674466  完善的学习文档              
  • selenium2+java自动化测试项目实战,selenium+python自动化测试项目实战,资料分享
  • selenium2 python自动化测试项目实战
  • Selenium2 Python自动化测试实战 包括自动化测试项目实战、高级应用、多线程应用、Git管理项目应用
  • Python3 接口自动化测试项目实战一(WEB项目) 1.1 接口测试项目搭建 1.1.1 教育局招生管理系统部署 教育局招生管理系统是基于java+mysql,下面介绍它的部署过程。 1.下载部署文件。 2.安装jdk以及配置环境变量。 ...
    											Python3 接口自动化测试项目实战一(WEB项目)
    

    1.1 接口测试项目搭建
    1.1.1 教育局招生管理系统部署
    教育局招生管理系统是基于java+mysql,下面介绍它的部署过程。

    1.下载部署文件。

    2.安装jdk以及配置环境变量。

    点击文件进行安装。

    下一步下一步直接安装。

    本人的安装路径是C:\Program Files\Java\jdk1.7.0_17。

    安装完成后需要设置环境变量从而使编译器正常使用。右击“计算机”选择“属性”选择左边“高级系统设置”à选择上面“高级”选项卡点击右下角“环境变量”按钮。

    接下来弹出的对话框会出现用户变量和系统变量。用户变量对当前登录账户有效,系统变量对所有用户都有效,读者可根据需要设置。

    环境变量配置的方法/步骤:

    1). 在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径,在这里就填写“C:\Program Files\Java\jdk1.7.0_17”。

    2). 在系统变量里点击新建变量名填写CLASSPATH,变量值填写。“.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar”,注意不要忘记前面的点和中间的分号。

    3). 在系统变量里找到Path变量,这是系统自带的,不用新建。双击Path,由于原来的变量值已经存在,故应在已有的变量后加上“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin”。注意前面的分号。

    验证的方法:在运行框中输入cmd命令,回车后输入javac,按回车出现以下画面。

    3.解压 apache-tomcat-7.0.42 压缩包,把 recruit.students.war 包放到E:\apache-tomcat-7.0.42\webapps 下。

    1. 点击 安装mysql 服务端。

    设置mysql账户和密码: root /root

    默认下一步下一步安装完成。

    5.用mysql 客户端工具 navicat 连接mysql ->新建一个recruit_students 库。

    6.把 recruit_students_sql 数据文件导入到新建的库中。

    7.导完之后,会看到如下图一些表。

    8.修改war包下的数据库配置文件:datasource.properties。

    E:\apache-tomcat-7.0.42\webapps\recruit.students\WEB-INF\classes 下。

    配置jdbc的URL。

    9.mysql 数据库用户访问授权。

    授权语句:

    GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘root’ WITH GRANT OPTION;

    commit;

    10.点击E:\apache-tomcat-7.0.42\bin下的startup 启动tomcat.

    11.访问教育局招生系统。

    访问地址:http://127.0.0.1:8090/recruit.students/login/view。

    初始账户和密码: admin /test123
    在这里插入图片描述

    备注:tomcat默认的端口是8080,我用的是8090,是因为修改了tomcat的端口。

    17.1.2教育局招生管理系统的功能清单
    在这里插入图片描述

    1.2 项目第一个接口测试用例
    教育局招生管理系统登录接口用例实现步骤:

    1、打开抓包工具:fiddler。

    2、登录教育局招生管理系统。

    3、抓取登录http请求。

    4、分析登录http请求(请求地址、是否重定向、get请求还是post请求、请求的头信息、请求的response)。

    5、数据的处理(处理抓取到的头信息)

    6、编写接口代码。

    7、人工验证接口测试结果。(后续讲断言)

    第一步:下面对fiddler抓取到的数据进行分析。

    【请求方法】:带参数的get

    【请求地址】:http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C

    【请求头信息】:

    Host: 127.0.0.1:8090

    Connection: keep-alive

    Upgrade-Insecure-Requests: 1

    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8

    Referer: http://127.0.0.1:8090/recruit.students/login/view

    Accept-Encoding: gzip, deflate, br

    Accept-Language: zh-CN,zh;q=0.9

    Cookie: JSESSIONID=AED5BBB1B5E4F9BEDCC3A0FC88668871; userInfoCookie=""

    【请求的response】:空

    请求的 response 为空是因为登录的时候,做了跳转,状态码为:302,跳转到了

    http://127.0.0.1:8090/recruit.students/school/manage/index 这个地址,这个状态码为200。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    查看http://127.0.0.1:8090/recruit.students/school/manage/index 这个地址请求的response,返回的是登陆后的信息。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    通过分析,我们是清楚的了解到这个接口的情况。

    第二步:接着还需要请求头信息的处理,去掉一些没用的请求头信息,保留如下:

    “Connection”: “keep-alive”,

    “User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36”,

    “Referer”: “http://127.0.0.1:8090/recruit.students/login/view”,

    【Connection】:如果只是测试登录接口,这个参数可以去掉,如果需要测试登录之后新建学校,那这个头信息就需要保留。

    【User-Agent】:模拟用户利用浏览器访问Web网站的真实行为,每个接口都需要。

    【Referer】:登录重定向的时候用到。

    第三步:最后编写代码实现。

    程序实现:

    方式一:直接在URL上写完整的URL。

    import requests

    url=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息。

    headers = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",  
    

    }

    发送get请求

    response = requests.get(url,headers = headers)

    查看响应内容,response.text 返回的是Unicode格式的数据

    print(response.text)

    查看响应码

    print(response.status_code)

    运行结果:

    在这里插入图片描述

    方式二:带参数的get请求。

    import requests

    url=“http://127.0.0.1:8090/recruit.students/login/in?”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息

    headers = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    URL参数

    payload = {‘account’: ‘admin’,‘pwd’:‘660B8D2D5359FF6F94F8D3345698F88C’}

    发送get请求

    response = requests.get(url,headers = headers,params=payload)

    查看响应内容,response.text 返回的是Unicode格式的数据

    print(response.text)

    查看响应码

    print(response.status_code)

    运行结果:

    在这里插入图片描述

    方式三:data=payload 的Post请求。

    在这里插入图片描述

    import requests

    url=“http://127.0.0.1:8090/recruit.students/login/in?”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    URL参数

    payload = {‘account’: ‘admin’,‘pwd’:‘660B8D2D5359FF6F94F8D3345698F88C’}

    发送Post请求

    response = requests.post(url,headers = headers,data=payload)

    查看响应内容,response.text 返回的是Unicode格式的数据

    print(response.text)

    查看响应码

    print(response.status_code)

    运行结果:

    在这里插入图片描述

    这3种方式都实现了教育局招生管理系统登录接口用例,我们再打印请求response后的URL

    http://127.0.0.1:8090/recruit.students/school/manage/index;jsessionid=13284D7E10CA9E92A443873A59D9E3A1,从这个地址看出,我们登录的时候,接口重定向,跳转到了http://127.0.0.1:8090/recruit.students/school/manage/index 地址,跟我们通过抓包的结果是一样的。
    在这里插入图片描述

    第四步:验证结果。

    通过程序运行的结果和抓包的结果对比,验证通过。

    1.3 测试用例断言
    接口用例的断言设计,客户端需要发送了http请求,服务端返回 response(html内容),就需要我们考虑提取html内容里的元素作为用例的检查点,例如

    教育局招生管理系统登录接口用例登录成功后,我们可以设置断言看是否可以从服务端返回 response(html内容)中获取“退出登录”文本。
    在这里插入图片描述

    第一步:首先,我们先发送请求,获取服务端返回 response(html内容)进行分析。
    在这里插入图片描述

    为了更进一步确认,可以把返回的html内容拷贝到 EditPlus 3 下查看。

    在这里插入图片描述

    第二步,编写代码,进行断言判断。

    程序实现:

    from bs4 import BeautifulSoup

    import requests

    url=“http://127.0.0.1:8090/recruit.students/login/in?”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    URL参数

    payload = {‘account’: ‘admin’,‘pwd’:‘660B8D2D5359FF6F94F8D3345698F88C’}

    发送get请求

    response = requests.get(url,headers = headers,params=payload)

    查看响应内容,response.text 返回的是Unicode格式的数据

    html=response.text

    #创建 Beautiful Soup 对象

    soup = BeautifulSoup(html,“lxml”)

    获取“退出登录”文本

    info =soup.select(’.toprighthref’)[0].get_text()

    #断言,检查客户端发送get请求结果是否符合预期。

    try:

    assert info == "退出登录"
    
    print('-----pass------')
    

    except ValueError:

    print("----fail-----")

    运行结果:
    在这里插入图片描述

    这里获取html的文本信息,只是使用前面介绍的BeautifulSoup,大家可以试试用正则表达式或者XPath试试。

    备注:http请求的端口,尽量不要用相应的状态码(response.status_code)作为断言,例如:状态码(200),就认为是用例成功,现实中,很多请求,状态码返回 200,实际上是请求失败的。所以用来做断言的条件要准确和唯一。

    1.4 接口测试用例的设计
    Web接口测试其实可以等同于功能测试,只是被测对象是接口,无界面交互而已;所以用例设计的方法是通用的。

    常用的测试方法如下:

    1、等价类划分法

    2、边界值分析

    3、因果图判定法

    4、场景分析法

    17.4.1接口测试用例设计关注点
    1、接口的协议类型(http还是https…)。

    2、 接口请求的方法(get/post…)。

    3、 参数是否必填。

    4、参数间是否存在关联。

    5、参数取值范围。

    6、业务规则。

    17.4.2接口测试用例设计思路

    1. 优先级–针对所有接口。

    1、暴露在外面的接口,因为通常该接口会给第三方调用。

    2、供系统内部调用的核心功能接口。

    3、供系统内部调用非核心功能接口。

    1. 优先级–针对单个接口。

    1、正向用例优先测试,逆向用例次之(通常情况,非绝对)。

    2、是否满足前提条件 > 是否携带默认参值参数 > 参数是否必填 > 参数之间是否存在关联 > 参数数据类型限制 >参数数据类型自身的数据范围值限制。

    17.4.3接口测试用例设计分析
    通常,设计接口测试用例需要考虑以下几个方面:

    1、是否满足前提条件

    有些接口需要满足前置条件,才可成功获取数据。常见的,需要登陆Token。

    逆向用例:

    针对是否满足前置条件(假设为n个条件),设计0~n条用例。

    2、是否携带默认值参数。

    正向用例:

    带默认值的参数都不填写、不传参,必填参数都填写正确且存在的“常规”值,其它不填写,设计1条用例。

    3、业务规则、功能需求。

    这里根据实际情况,结合接口参数说明,可能需要设计n条正向用例和逆向用例

    4、参数是否必填。

    逆向用例:

    针对每个必填参数,都设计1条参数值为空的逆向用例。

    5、参数之间是否存在关联。

    有些参数彼此之间存在相互制约的关系。

    逆向用例:

    根据实际情况,可能需要设计0~n条用例。

    6、参数数据类型限制。

    逆向用例:

    针对每个参数都设计1条参数值类型不符的逆向用例。

    7、参数数据类型自身的数据范围值限制。

    正向用例:

    针对所有参数,设计1条每个参数的参数值在数据范围内为最大值的正向用例。

    逆向用例:

    针对每个参数(假设n个),设计n条每个参数的参数值都超出数据范围最大值的逆向用例。

    针对每个参数(假设n个),设计n条每个参数的参数值都小于数据范围最小值的逆向用例。

    以上几个方面考虑全的话,基本可以做到如下几个方面的覆盖:

    主流程测试用例:正常的主流程功能校验。

    分支流测试用例:正常的分支流功能校验。

    异常流测试用例:异常容错校验。

    17.4.4接口测试用例设计模板
    在这里插入图片描述

    备注:模板会分享到网盘,大家可以从网盘上下载。

    1.5 教育局招生管理系统-接口测试用例
    1.5.1测试用例1-新增学校
    用例步骤:

    1、登录教育局招生管理系统

    2、新建学校(学校名称:tschool;学校类型:小学;录取学生权限:勾选;备注:create a new school)

    3、填写完成,点提交。

    在这里插入图片描述

    通过fiddler抓包。
    在这里插入图片描述
    在这里插入图片描述

    我们可以收集到接口的相关信息:

    【请求方法】:POST

    【URL】: http://127.0.0.1:8090/recruit.students/school/manage/addSchoolInfo

    【headers】:

    {“Connection”: “keep-alive”,

    “User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36”,

    “Referer”: “http://127.0.0.1:8090/recruit.students/school/manage/index”,}

    【data】:

    {“schoolName”:“t_school”,

    “listSchoolType[0].id”: “2”,

    “canRecruit”:"" 1,

    “remark”:“create a new school”,}

    学校创建成功之后,我们可以通过学校列查看新建的数据。

    学校列表是另外个接口:http://127.0.0.1:8090/recruit.students/school/manage/schoolInfoList

    在这里插入图片描述

    经过分析,我们就可以写接口测试用例了。

    程序实现:

    import requests

    import json

    from urllib import parse

    第一步:登录教育局招生管理系统

    url_login=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息

    headers = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    发送get请求

    response = requests.get(url_login ,headers = headers)

    第一步:登录教育局招生管理系统

    url_login=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers1 = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    发送get请求

    r1 = requests.get(url_login,headers = headers1)

    #print(r1.text)

    新建学校

    url_create_school=“http://127.0.0.1:8090/recruit.students/school/manage/addSchoolInfo”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers2 = {“Connection”: “keep-alive”,

    “User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36”,

    “Referer”: “http://127.0.0.1:8090/recruit.students/school/manage/index”,

    “X-Requested-With”: “XMLHttpRequest”,

    “Cookie”: “JSESSIONID=09CD90A3357DEBD4F3B0F2CF3B387DCA”,

    }

    formdata = {

    “schoolName”:“t_school2”,

    “listSchoolType[0][id]”:“2”,

    “canRecruit”:“1”,

    “remark”:“create a new school_2”,

    }

    通过urlencode()转码

    postdata = parse.urlencode(formdata)

    print(postdata)

    创建session对象,可以保存Cookie值。

    ssion = requests.session()

    发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里。

    r2 = ssion.post(url_create_school,headers = headers2,data=postdata)

    html = r2.text

    print(html)

    查看响应码

    print(r2.status_code)

    运行结果:

    在这里插入图片描述

    测试用例2:从学校列表查询学校。

    用例步骤:

    1、登录教育局招生管理系统

    2、从学校列表查询学校(学校名称: t_school)

    3、点查询。

    在这里插入图片描述

    用fiddler抓包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    代码实现:

    import requests

    import json

    from urllib import parse

    import requests

    第一步:登录教育局招生管理系统

    url_login=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息

    headers = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    发送get请求

    response = requests.get(url_login ,headers = headers)

    第一步:登录教育局招生管理系统

    url_login=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers1 = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    发送get请求

    r1 = requests.get(url_login,headers = headers1)

    #print(r1.text)

    查询学校

    url_find_school=“http://127.0.0.1:8090/recruit.students/school/manage/schoolInfoList”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers2 = {""

    “User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:62.0) Gecko/20100101 Firefox/62.0”,

    “Accept”: “application/json, text/javascript, /; q=0.01”,

    “Referer”: “http://127.0.0.1:8090/recruit.students/school/manage/index”,

    “X-Requested-With”: “XMLHttpRequest”,

    “Cookie”: “JSESSIONID=09CD90A3357DEBD4F3B0F2CF3B387DCA”,

    “Connection”: “keep-alive”,

    }

    formdata = {

    “schoolName”:“t_school”,

    “schoolType”:“0”,

    “page”:“1”,

    “pageSize”:“15”,

    }

    通过urlencode()转码

    postdata = parse.urlencode(formdata)

    #打印转码后的数据

    print(postdata)

    创建session对象,可以保存登录Cookie值。

    ssion = requests.session()

    发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里。

    r2 = ssion.post(url_find_school,headers = headers2,data=postdata)

    html = r2.text

    print(html)

    查看响应码

    print(r2.status_code)

    运行结果:
    在这里插入图片描述

    测试用例3:禁用学校。
    在这里插入图片描述

    通过fiddler抓包。

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    程序实现:

    import requests

    import json

    from urllib import parse

    import requests

    第一步:登录教育局招生管理系统

    url_login=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息

    headers = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99
    

    Safari/537.36",

    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    发送get请求

    response = requests.get(url_login ,headers = headers)

    第一步:登录教育局招生管理系统

    url_login=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers1 = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99
    

    Safari/537.36",

    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    发送get请求

    r1 = requests.get(url_login,headers = headers1)

    #print(r1.text)

    查询学校

    url_DisableSchool=“http://127.0.0.1:8090/recruit.students/school/manage/enableOrDisableSchool”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers2 = {""

    “User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:62.0) Gecko/20100101 Firefox/62.0”,

    “Referer”: “http://127.0.0.1:8090/recruit.students/school/manage/index”,

    “Content-Type”: “application/json”,

    “X-Requested-With”: “XMLHttpRequest”,

    “Content-Length”: “46”,

    “Cookie”: “JSESSIONID=09CD90A3357DEBD4F3B0F2CF3B387DCA”,

    “Connection”: “keep-alive”,

    }

    接口的数据类型是json格式

    formdata = {“id”:“820890”,“disable”:0,“schoolId”:“251”}

    通过urlencode()转码

    postdata = parse.urlencode(formdata)

    #打印转码后的数据

    print(postdata)

    创建session对象,可以保存登录Cookie值。

    ssion = requests.session()

    发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里。

    r2 = ssion.post(url_DisableSchool,headers = headers2,data=postdata)

    html = r2.text

    print(html)

    查看响应码

    print(r2.status_code)

    运行结果:
    在这里插入图片描述
    在这里插入图片描述

    测试用例4:启用学校。

    程序实现:

    import requests

    import json

    from urllib import parse

    import requests

    第一步:登录教育局招生管理系统

    url_login=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息

    headers = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    发送get请求

    response = requests.get(url_login ,headers = headers)

    第一步:登录教育局招生管理系统

    url_login=“http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers1 = {

    "Connection": "keep-alive",
    
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36",
    
    "Referer": "http://127.0.0.1:8090/recruit.students/login/view",
    

    }

    发送get请求

    r1 = requests.get(url_login,headers = headers1)

    #print(r1.text)

    启用学校

    url_DisableSchool=“http://127.0.0.1:8090/recruit.students/school/manage/enableOrDisableSchool”

    #把请求头信息进行处理,去掉一些没用的,保留一些有用头信息·

    headers2 = {""

    “User-Agent”: “Mozilla/5.0 (Windows NT 6.1; WOW64; rv:62.0) Gecko/20100101 Firefox/62.0”,

    “Referer”: “http://127.0.0.1:8090/recruit.students/school/manage/index”,

    “Content-Type”: “application/json”,

    “X-Requested-With”: “XMLHttpRequest”,

    “Cookie”: “JSESSIONID=365D9E30F67F88F7301B32AA83C14011”,

    “Connection”: “keep-alive”,

    }

    接口的数据类型是json格式

    formdata = {“id”:“820890”,“disable”:1,“schoolId”:“251”}

    通过urlencode()转码

    postdata = parse.urlencode(formdata)

    #打印转码后的数据

    print(postdata)

    创建session对象,可以保存登录Cookie值。

    ssion = requests.session()

    发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里。

    r2 = ssion.post(url_DisableSchool,headers = headers2,data=postdata)

    html = r2.text

    print(html)

    查看响应码

    print(r2.status_code)

    运行结果:

    在这里插入图片描述

    备注:这里我就不写全部单个的用例了,用例情况类似,一个一个去实现,同时,这里我也暂时不做断言,后续讲单元测试框架再讲框架自动的断言。

    作者写的书: 1.《Robot Framework自动化项目最佳实战》 百度阅读地址:http://yuedu.baidu.com/ebook/9772c2d0af45b307e9719709 2.《手把手教你玩转python3接口自动化》 百度阅读地址:https://yuedu.baidu.com/ebook/2360c29c294ac850ad02de80d4d8d15abe2300b4 3.《python3+scrapy爬虫框架+redis分布式》 百度阅读地址:https://yuedu.baidu.com/ebook/0360ab7f326c1eb91a37f111f18583d049640f01

    展开全文
  • Python3 接口自动化测试项目实战一(WEB项目)1.1 接口测试项目搭建1.1.1 教育局招生管理系统部署教育局招生管理系统是基于java+mysql,下面介绍它的部署过程。1.从我的网盘下载部署文件。2.安装jdk以及配置环境变量。...

    Python3 接口自动化测试项目实战一(WEB项目)

    1.1 接口测试项目搭建

    1.1.1 教育局招生管理系统部署

    教育局招生管理系统是基于java+mysql,下面介绍它的部署过程。

    1.从我的网盘下载部署文件。

    50ad1f4199eed28c5bc86d37cd3647e8.png

    2.安装jdk以及配置环境变量。

    点击

    aebdcc6d5685b6d6315fa5f3d03ec64c.png

    文件进行安装。

    1d73054851f7e0b88e936666a99dedf3.png

    下一步下一步直接安装。

    本人的安装路径是C:Program FilesJavajdk1.7.0_17。

    安装完成后需要设置环境变量从而使编译器正常使用。右击“计算机”选择“属性”选择左边“高级系统设置”à选择上面“高级”选项卡点击右下角“环境变量”按钮。

    接下来弹出的对话框会出现用户变量和系统变量。用户变量对当前登录账户有效,系统变量对所有用户都有效,读者可根据需要设置。

    环境变量配置的方法/步骤:

    1). 在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径,在这里就填写“C:Program FilesJavajdk1.7.0_17”。

    2). 在系统变量里点击新建变量名填写CLASSPATH,变量值填写。“.;%JAVA_HOME%lib;%JAVA_HOME%libools.jar”,注意不要忘记前面的点和中间的分号。

    3). 在系统变量里找到Path变量,这是系统自带的,不用新建。双击Path,由于原来的变量值已经存在,故应在已有的变量后加上“;%JAVA_HOME%bin;%JAVA_HOME%jrebin”。注意前面的分号。

    验证的方法:在运行框中输入cmd命令,回车后输入javac,按回车出现以下画面。

    d1bb8dfd653a36c74fab4a01cc0c5768.png

    3.解压 apache-tomcat-7.0.42 压缩包,把 recruit.students.war 包放到E:apache-tomcat-7.0.42webapps 下。

    299fbc74d7951fd576b4b734d6840f01.png

    4. 点击 安装mysql 服务端。

    57c173a9b63b9d3a17f1d24a8d3cdb7e.png

    设置mysql账户和密码: root /root

    默认下一步下一步安装完成。

    5.用mysql 客户端工具 navicat 连接mysql ->新建一个recruit_students 库。

    905331647c111d3d00663a365733c8c7.png

    6.把 recruit_students_sql 数据文件导入到新建的库中。

    3345b75c63c75341fa2f7893a38b2642.png

    7.导完之后,会看到如下图一些表。

    e5a0702f27317f8f0ccafb57dfd90bfc.png

    8.修改war包下的数据库配置文件:datasource.properties。

    E:apache-tomcat-7.0.42webappsecruit.studentsWEB-INFclasses 下。

    4cb3c175750411c4eb0e4ebdf6ab3135.png

    配置jdbc的URL。

    51f37af72f1d177fcd0a9832081f0a76.png

    9.mysql 数据库用户访问授权。

    a1eb608796f5e383a5a3bc4361586b96.png

    授权语句:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

    commit;

    10.点击E:apache-tomcat-7.0.42bin下的startup 启动tomcat.

    fbe910ec78cb4406fac1942dff42a20a.png
    7c0766c14e317fc03c9210374373ce4d.png

    11.访问教育局招生系统。

    访问地址:http://127.0.0.1:8090/recruit.students/login/view。

    初始账户和密码: admin /test123

    31748dd47824db7aeac897427e728184.png

    备注:tomcat默认的端口是8080,我用的是8090,是因为修改了tomcat的端口。

    17.1.2教育局招生管理系统的功能清单

    5c8b1982dec1b846b6ad719fb154fdfd.png

    1.2 项目第一个接口测试用例

    教育局招生管理系统登录接口用例实现步骤:

    1、打开抓包工具:fiddler。

    2、登录教育局招生管理系统。

    3、抓取登录http请求。

    4、分析登录http请求(请求地址、是否重定向、get请求还是post请求、请求的头信息、请求的response)。

    5、数据的处理(处理抓取到的头信息)

    6、编写接口代码。

    7、人工验证接口测试结果。(后续讲断言)

    9d3a72315b3c9d794a5d194d8a93f4fa.png

    第一步:下面对fiddler抓取到的数据进行分析。

    【请求方法】:带参数的get

    【请求地址】:http://127.0.0.1:8090/recruit.students/login/in?account=admin&pwd=660B8D2D5359FF6F94F8D3345698F88C

    【请求头信息】:

    Host: 127.0.0.1:8090

    Connection: keep-alive

    Upgrade-Insecure-Requests: 1

    User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36

    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

    Referer: http://127.0.0.1:8090/recruit.students/login/view

    Accept-Encoding: gzip, deflate, br

    Accept-Language: zh-CN,zh;q=0.9

    Cookie: JSESSIONID=AED5BBB1B5E4F9BEDCC3A0FC88668871; userInfoCookie=""

    【请求的response】:空

    请求的 response 为空是因为登录的时候,做了跳转,状态码为:302,跳转到了

    http://127.0.0.1:8090/recruit.students/school/manage/index 这个地址,这个状态码为200。

    6ebb50b8442f911878e07321a433398c.png
    3a613122201a6ab5b4422bc604fbfa45.png
    958f1c6c6c89237040a13f1c525dbd3b.png

    查看http://127.0.0.1:8090/recruit.students/school/manage/index 这个地址请求的response,返回的是登陆后的信息。

    e9f19b11677cd2b414e33158684e5bce.png
    ef0fcfa3c34714916ad0586d99968883.png
    589cbe44973b5e210b8cd5cf853082d5.png

    通过分析,我们是清楚的了解到这个接口的情况。

    第二步:接着还需要请求头信息的处理,去掉一些没用的请求头信息,保留如下:

    "Connection": "keep-alive

    展开全文
  • 作为一个自学菜鸡的第一个项目,是一个简单的开源项目自动化测试,运用python的unittest,po模式,多进程,多线程,数据驱动。简单上手驱动方便。 运行的部分结果 整体框架 测试页面 GitHub地址:...

    作为一个自学菜鸡的第一个项目,是一个简单的开源项目的自动化测试,运用python的unittest,po模式,多进程,多线程,数据驱动。简单上手驱动方便。
    在这里插入图片描述运行的部分结果
    整体框架
    在这里插入图片描述测试页面
    在这里插入图片描述
    GitHub地址:https://github.com/liuweilong-git/selenium
    开源项目地址:https://github.com/liuweilong-git/AutoTestProject-master

    1. 首先下载开源项目,按照readme运行。
    2. 得到url修改到项目page中的__init__文件中。
    3. 运行running.py即可运行。
      运行过程运行过程
    展开全文
  • ▊《Selenium 3+Python 3自动化测试项目实战:从菜鸟到高手》田春成 著电子书售价:39.5元2019年9月出版Selenium是目前非常流行的一种自动化测试工具。本书基于Python 3语言讲述了新的Selenium 3的基本理论与操作,...

    222655af4a9cfe1a2d624e39c26def38.png

    1dd2e34604f1a3af245796632d949a6a.png

    Selenium 3+Python 3自动化测试项目实战:从菜鸟到高手

    田春成

    电子书售价:39.5元

    2019年9月出版

    Selenium是目前非常流行的一种自动化测试工具。本书基于Python 3语言讲述了新的Selenium 3的基本理论与操作,涉及各种高级应用,以及如何进行项目实战,并提供了详细的自动化平台部署步骤。

    本书共14章,分为4篇。第1篇介绍了Selenium概况、相关的基础知识及环境的搭建步骤;第2篇介绍了Selenium涉及的各种技术,包括前端技术、Selenium元素定位、Selenium常用方法及WebDriver进阶应用;第3篇以携程订票系统为例,深入探讨了如何进行项目实战与优化,详细介绍了项目重构、数据驱动测试、Page Object设计模式及行为驱动等相关的各种常用技术;第4篇介绍了平台建设相关的一些实用技术,如平台搭建维护、项目部署及运用Docker容器技术进行测试等。

    为了使读者不但能掌握Selenium自动化测试,而且能够迅速获得项目经验,彻底掌握并灵活运用到实际的测试项目中,本书注重理论与实践相结合,提供了大量典型的自动化测试实例,按照由浅入深、前后照应的顺序来安排内容。

    如果你是初学者,可以按照本书安排的先后顺序来学习,这会让你对自动化项目能更快上手;如果你是有经验的高级测试从业人员,可以根据自己的需求阅读此书,借此来夯实基础,获得更多的项目设计和部署的经验,以及对项目全局方面的认知。


    7d6b047bf1e1daaf584b0b90fd2539d3.png

    ▼ 点击阅读原文,立刻下单!

    展开全文
  • 项目介绍目的:测试某官方网站登录功能模块可以正常使用用例:1.输入格式正确的用户名和正确的密码,验证是否登录成功; 2.输入格式正确的用户名和不正确的密码,验证是否登录失败,并且提示信息正确; 3.输入格式...
  • user/bin/python2 '''3 代码说明:麦子学院登录模块自动化测试用例脚本4 编写日期:5 设置者:linux超6 '''78 import time9 fromselenium import webdriver10 from webinfo import webinfo11 from userinfo import ...
  • 《Selenium 3+Python 3自动化测试项目实战:从菜鸟到高手》作者:田春成 李靖截止至2019年 10 月 23 号 中午12点前,精选留言被点赞最多的前5名用户将获得此书。多年一线自动化测试经验总结大量典型自动化测试实例以...
  • 自动化测试项目实战训练【广州8月】: http://www.automationqa.com/training-info/alltraininginfo/item/184-automation-training-2011-8.html
  • po+selenium+unittest自动化测试项目实战

    万次阅读 2020-01-13 17:13:40
    一、项目工程目录: 二、具体工程文件代码: 1、新建一个包名:common(用于存放基本函数封装) (1)在common包下新建一个base.py文件,作用:页面操作封装。base.py文件代码如下: # coding=utf-8 """ ---...
  • Selenium是目前非常流行的一种自动化测试工具。本书基于Python 3语言讲述了最新的Selenium 3的基本理论与操作,涉及各种高级应用,以及如何进行项目实战,并提供了详细的自动化平台部署步骤。本书共14章,分为4篇。...
  • 项目介绍目的:测试某官方网站登录功能模块可以正常使用用例:1.输入格式正确的用户名和正确的密码,验证是否登录成功; 2.输入格式正确的用户名和不正确的密码,验证是否登录失败,并且提示信息正确; 3.输入格式...
  • 软件测试学习中,自动化测试时很重要的一部分,今天分享的就是有关于软件测试中自动化测试项目实战,包含资讯类项目和电商类项目学习,分别为黑马头条项目和Tpshop项目,下面我会分别介绍,想学习的小伙伴,可以...
  • 统一功能测试(UFT)是一个著名的功能测试商业测试工具。它为跨平台的桌面、网络和移动应用程序的应用编程接口、网络服务和图形用户界面...该工具具有先进的基于图像的对象识别功能、可重复使用的测试组件和自动化文档。
  • 整体的项目结构如下:data:存放测试数据report:imgae放测试截图、reportdata存放测试生成的报告test_case:models存放公用模块的函数,page_obj存放页面类;***_sta测试用例run_test:执行入口具体每个模块的代码...
  • 1.3 自动化测试项目的适用条件 上线自动化测试项目是需要“天时、地利、人和”的,为什么这么说呢?因为自动化测试项目的评估需要各方面的考虑,但总体来说还是有一些规律可循的: · 自动化测试前期投入较多,...
  • 项目介绍  目的:  测试某官方网站登录功能模块可以正常使用  用例:  1.输入格式正确的用户名和正确的密码,验证是否登录成功; 2.输入格式正确的用户名和不正确的密码,验证是否登录失败,并且提示信息...
  • 11.1.3 自动化测试用例编写原则 在编写自动化测试用例过程中应该遵循以下原则: 1、一个用例为一个完整的场景,从用户登录系统到最终退出并关闭浏览器; 2、一个用例只能验证一个功能点,不要试图在用户登录系统...
  • 第8章 项目实战 本章通过项目实战的方式来让读者对自动化测试有个系统的认识。通过项目实战可以更快地将基础知识串联起来。 8.1 项目需求分析汇总 此部分内容是分析项目要覆盖的业务场景,以及要实现自动化的功能...
  • 第13章 测试平台维护与项目部署 任何测试形式采取“单兵作战”的机会不会很大,即项目中的自动化测试一般是需要互相协作的。如果需要互相协作就需要有规范。而对自动化测试来说,平台的建设就显得很有必要,平台...
  • 对于自动化测试人员来说,掌握了BDD之后,可以试着利用它去提升测试团队的自动化测试程度,因为BDD不会去关注程序相关函数等对象的细节,而只关注其功能点,所以可以减轻回归测试任务的压力。从本章开始,笔者将介绍...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,052
精华内容 420
关键字:

自动化测试项目实战