《颠覆你的Python接口自动化测试》01-总体设计思路

by admin on 2019年10月15日

我会专门说一下Python自动化的学习思路,做成了思维导图,方便下载留存,要是不太清,可以留言或者私信找我要原图。
对于刚刚进入的测试行业的人来说,未来该怎么样朝着自动化方向发展,即使接触到了自动化测试,又该从何下手去学呢?
这么举个例子,这是从智联上搜索“自动化测试工程师”出来的招聘需求,从北京地区来看,会自动化,薪资过20k还是没有问题的,个别的可能因为公司的原因会给的低一些。所以来说,做测试做的好,会了接口,会了性能,就要考虑往自动化方向发展了。

Python自动化开发学习的第一周,python自动化第一周

1.python的发展史

2.python是什么语言
编译型or解释型?python是解释型的语言

python的优点:简单易懂、开发效率高、高级语言、可移植性、可扩展性、可嵌入性
缺点:速度慢、代码不能加密、线程不能利用多cpu问题

3.安装python

Windows下双版本(Python2和Python3)安装指南:

linux自带python

4.编写了第一个python的程序
#!/usr/bin/env python

print (”hello,world”)

5.安装pycharm

6.学习了变量
变量的定义规则
变量名只能是字母、数字或者下划线的任意组合
变量名的第一个字符不能是数字
还有其他的关键字不能声明成变量名

[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’,
‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’,
‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’,
‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
常量都是大写

字符编码:ASCII—-》unicode—》uft-8

7.

注释
单行用#
多行用三个引号””” “”” ”’ ”’

用户输入
name = input (“name:”)
age = input (“age:”)
job = input (“job:”)
salary = input (“salary:”)

info = ”’
———–info of %s———–
Name:%s
Age:%s
Job:%s
Salary:%s
”’% (name,name,age,job,salary)

info2 = ”’
———–info of {name}———–
Name:{name}
Age:{age}
Job:{job}
Salary:{salary}
”’.format(name=name,age=age,job=job,salary=salary)

info3 = “””
———–info of {0}———–
Name:{0}
Age:{1}
Job:{2}
Salary:{3}
“””.format(name,age,job,salary)

 

print (info3)

 

1.python的发展史 2.python是什么语言 编译型or解释型?python是解释型的语言
python的优点:简…

如何开始设计

  • 1- 以结果为导向,反推要实现这些结果要细分为哪些步骤
  • 2- 将每一步抽象为功能点
  • 3- 各个击破,逐一解决每一个功能点,之后再将功能点串联起来

查看网页页面代码可以使用以下途径:

  本文为参加老男孩Python自动化运维课程第一天学习内容的总结。

图片 1

实现的步骤要求及实现方法

  • 步骤1:测试数据的存储
    实现方法:存储测试用例数据,可以选择MySQL数据库
  • 步骤2:从存储设备中获取数据
    实现方法:Python从MySQL中取需要的数据,涉及操作的封装和sql脚本编写
  • 步骤3:自动发送接口请求
    实现方法:Python发送HTTP请求,获取返回包数据
  • 步骤4:比较返回结果和预期结果
    实现方法:从返回包中获取需要的数据和预期结果比较
  • 步骤5:把结果写入存储设备中
    实现方法:将比较结果写到对应的测试用例后面
  • 步骤6:保存测试结果
    实现方法:把数据库表数据导出到excel中

Chrome:按F12或者网页页面右键的“检查”           
Firefox:网页页面右键的“审查元素”

大致内容如下:

简单的说,想要学会自动化测试,必须要会一门语言,java也好,Python也好,都是为了完成自动化测试。
那么就针对于java自动化和Python自动化这两个方向去说一下具体的学习思路,思维导图会相应的配上,方便阅读。

抽象步骤到功能点

  • Python处理MySQL数据(步骤1,2)
  • Python发送http协议接口请求(步骤3)
  • Python处理http返回包数据(步骤4)
  • Python统计导出测试结果(步骤5,6)

图片 2

  Python介绍

java自动化 一、自动化测试基础,初识Selenium工具
1、自动化测试理论及适用范围 2、自动化测试工具及selenium工具介绍
3、前端工具和技术

1.通过id属性来定位元素(id属性在html文档中必须具有唯一性)

      第一个Python程序: Hello World

二、Java语言,熟练编写自动化测试脚本 1、Java数据类型 2、常量与变量
3、导入和输入输出 4、Java结构化语句 5、Java数组与字典 6、Java类与对象
7、脚本异常处理

   find_element_by_id()方法

      Python变量

三、SeleniumAPI操作方法,以及脚本增强 1、元素定位和等待设置
2、开发者工具的操作使用 3、模拟键盘、鼠标在页面中的操作
4、html标准控件操作和弹窗操作 5、截屏和判断操作

   文本输入框定位:find_element_by_id(‘kw’)

      用户交互(用户输入、输出)

四、testNG单元测试框架 1、框架介绍及配置 2、注解及属性组合使用场景
3、测试用例的几种执行方式 4、日志和断言实例讲解


     
流程控制:条件语句(if/elif/else)、循环语句(for/while/break/continue)

五、自动化框架,selenium grid并发自动化测试 1、TestNG数据驱动
2、页面对象模式 3、测试框架Demo 4、Selenium
Grid并发测试IE,Firefox,Chrome

2.通过name属性来定位元素(name属性在当前页面中)

一、Python语言介绍:

六、移动端自动化测试,Appium工具的操作使用 1、移动端自动化测试
2、主流移动自动化测试工具及Appium 3、Appium自动化工具的操作与使用
4、Appium工具实战测试,搭建测试环境运行Demo

   find_element_by_name()方法

     1、Python语言定义:

七、APP元素定位、操作步骤、以及工具 1、元素定位工具 2、元素定位
3、页面元素操作

   文本输入框定位:find_element_by_name(‘wd’)

   
1)Python是解释型语言:这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译;

八、appium增强、并行测试 1、截图和等待方式 2、并行测试实战的练习
3、如何生成测试报告 4、自动化搭建及实战


       
 2)Python是动态类型语言:指的是你在声明变量时,不需要说明变量的类型。你可以直接编写类似x=111x="I'm a string"这样的代码,程序不会报错。

九、Jenkins持续集成工具和monkey测试工具的操作使用
1、Jenkins持续集成概念,搭建测试环境 2、Jenkins实战操作
3、monkey概述和基本使用 4、monkey脚本录制、命令详解以及api用法

3.通过class属性来定位元素

         3)Python是强类型定义语言:在使用变量前,必须先定义。

图片 3

   find_element_by_class_name()方法

         Python由Guido van
Rossum于1989圣诞期间开发,首个正式版本Python编译器诞生于1991年。现已成为主流的编程语言之一。

接下来讲Python具体学习方向及思路

   文本输入框定位:find_element_by_class_name(‘s_ipt’)

   
 2、应用领域:主要应用于云计算、WEB开发、科学去处和数据分析、人工智能、金融、系统运维、图形GUI等方面。

一、自动化测试基础、初识selenium工具


     3、Python的优缺点:

1、自动化测试理论及适用范围

4.通过tag来定位元素

    优点:简单、明确、优雅;开发效率高;可移植性强;可扩展性;可嵌入性。

2、自动化测试工具及selenium工具使用

   find_element_by_tag_name()方法        
没成功!!!!略过………………..

         
 缺点:比C语言/JAVA执行速度慢(PyPy解释器的执行速度有时比C还快);代码不能加密(解释型语言);线程不能利用多CPU问题。

3、变量与数据类型


     
4、Python的解释器:Python解释器有很多,如CPython、IPython、PyPy、Jython、IronPython等,但使用最广泛的还是CPython。

4、前端工具和技术

5.通过link元素标签对之间的文本信息来定位元素

二、关于本文中所有运行Python代码的环境:

二、Python语言及熟练编写自动化测试脚本

   find_element_by_link_text()方法

   –操作系统:Ubuntu 16.10 (Linux 4.8.0)

1、Python入门


      图片 4

2、运算符讲解及使用

6.通过partial link定位元素,和link类似,只不过是部分文本信息来进行定位

   –Python版本:3.5.2

3、条件控制及循环

   find_element_by_partial_link_text()方法

      图片 5

4、文件读写操作


   –Python IDE: PyCharm 2016.3.2

5、数据库操作

7.find_element_by_xpath()方法

      图片 6

6、错误和异常处理

  
7.1绝对路径来定位:find_element_by_xpath(‘/html/body/………’)   

三、第一个程序:Hello World

三、seleniumAPI操作方法,及脚本增强

  
文本框:find_element_by_xpath(“/html/body/div[2]/div[1]/div/div[1]/div/form/span[1]/input”)

        通过vim/vi命令新建一个Python File,命令为“HelloWorld.py” ,  vim
HelloWorld.py 。

1、浏览器的操作

图片 7

   在HelloWorld.py中输入正面的内容:

2、元素定位和等待设置

   7.2通过属性定位元素

#!/usr/bin/python3.5                     # 告诉Linux系统,要通过/usr/bin/python3.5解释器来执行正面的代码
# -*- coding: utf-8 -*-           # Python2中必须添加这个一行,告诉Python解释器,要以UTF-8的编码形式执行正面的代码;Python3中默认UTF-8,可以不用添加本行。
# Author: Spencer Jiang           # 作者

print("Hello, World!")           # 打印Hello, World!

3、开发者工具的操作使用

   find_element_by_xpath(“//标签名[@属性=‘属性值’]”)

  两种运行方式:

4、模拟键盘,鼠标在页面中的操作

   id属性:find_element_by_xpath(“//input[@id = ‘kw’]”)

    1)、给HelloWorld.py赋可执行权限,然后执行: chmod 755
HelloWorld.py

5、HTML标准控件操作和弹窗操作

   name属性:find_element_by_xpath(“//input[@name = ‘wd’]”)

> chmod 755 HelloWorld.py
> ./HelloWorld.py

6、截屏和断言操作

   如果不想指定标签名,可以将标签名用 *
代替,xpath不局限于id、name、class这三个属值,
元素的任意属性都可以使用,只要它能唯一标识一个元素

    图片 8

四、unittest测试框架实战操作

   7.3通过标签定位元素

    2)、直接通过Python执行:python安装路径

1、unittest框架介绍及配置操作

  
当元素没有唯一标识的属性可以利用时,可以往上层级进行搜索,假如标签中有唯一标识,那
么可以利用标签名来进行定位

> /usr/bin/python3.5 HelloWorld.py

2、测试用例执行

   find_element_by_xpath(“//span[@class = ‘bg s_ipt_wr’]/input”)

    图片 9

3、日志和断言

   7.4通过多个属性组合定位元素

 

五、数据驱动/pageobject驱动

  
当一个属性不能唯一区分一个元素,可以用逻辑运算符and来连接多个属性查找元素

三、Python变量

1、数据驱动操作

   find_element_by_xpath(“//input[@id = ‘kw’ and @name = ‘wd’]”)

  1、变量定义的规则:

2、页面对象模式


  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 以下关键字不能声明为变量名
    [‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’,
    ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’,
    ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’,
    ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

3、测试框架demo

4、多线程实战操作

图片 10

    • 有效 标识符名称的例子有i__my_namename_23a1b2_c3

    • 无效 标识符名称的例子有2thingsthis is spaced outmy-name

六、移动端自动化测试,appium工具操作使用

8.通过CSS定位元素

  2、变量赋值:通过一个等号给变量赋值

1、移动端自动化测试

   8.1通过id属性定位元素

     示例: name = “Spencer Jiang”

2、主流移动自动化测试工具及appium介绍

   文本框:find_element_by_css_selector(“#kw”)

     也可以在一行能多个变量进行赋值。如: 

3、appium自动化工具的操作与使用

   按钮:find_element_by_css_selector(“#su”)

a, b = 3, "jmw"
print(a, b)
print(type(b), type(a))

######### 下面为输出结果:
3 jmw
<class 'str'> <class 'int'>

4、appium工具实战测试、搭建测试环境运行demo

   8.2通过class属性定位元素

  

七、APP元素定位、操作步骤以及工具讲解

   文本框:find_element_by_css_selector(“.s_ipt”)

四、用户交互 与 格式化输出:

1、元素定位工具讲解

   按钮:find_element_by_css_selector(“.bg s_btn”)

      用户输入 Python3用input()函数就好了,
Pyhton2有点儿复杂先不去学。

2、元素定位方法实战

   8.3通过其他属性值来定位元素

  
input()函数能接收从用户输入的任务字符,并以字符串类型返回用户输入的字符。

3、页面元素操作实战

   文本框:find_element_by_css_selector(“[name = ‘wd’]”)

  示例1(UserInput.py): name = input(“Please input your name: “)   

八、appium增强、并行测试

                   find_element_by_css_selector(“[maxlength =
255]”)

               age = int(input(“Please input you age: “))    #
将用户输入的字符转换成int类型,再赋值给变量 age。

1、截图和等待方式

                   find_element_by_css_selector(“[autocomplete =
‘off’]”)

#!/usr/bin/python3.5
# -*- coding:utf-8 -*-
# Author: Spencer Jiang

name = input("Please input your name: ")

age = int(input("Please input you age: "))

print("Your Name: %s, Your Age: %d" % (name, age))

2、并行测试实战

   8.4通过层级父子关系来定位元素

  图片 11

3、如何生成测试报告

   文本框:find_element_by_css_selector(“span > input “)

   示例2:
用户名、密码的输入,通过getpass模块,将密码隐藏显示。(HidePassword.py)  

4、自动化搭建及实战

   拓展:find_element_by_css_selector(“span > input.s_ipt”)

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
# Author: Spencer Jiang

import getpass
username = input("Please input your username: ")

password = getpass.getpass("Please input your password: ")

print(username, password)

九、Jenkins持续集成工具和monkey测试工具的操作使用


    图片 12

1、Jenkins持续集成概述、搭建测试环境

     格式化输出

2、Jenkins实战演练

    1)、print()函数中添加%号来格式化输出。

3、monkey概述和基本使用

      输出字符串:%s ,输出数值 %d, 输出浮点数%f等, 示例:

4、monkey脚本录制,命令详解以及API用法

#!/usr/bin/python3.5
# -*- coding:utf-8 -*-
# Function : The format output
# Date : 2017-02-10
# Author : Spencer Jiang

username = "Spencer Jiang"
age = 45
salary = 231.32

print("Your name is : %s " % username)
print("Your age is : %d " % age)
print("Your salary is : %f " % salary)
print("Your salary2f is : %.2f " % salary)            # 保留2位小数

图片 13

  图片 14

如果思维导图不够清晰可以在我群文件夹里下载高清原图,包括初中高级软件测试部分学习教材都可在群里搜集,38734
8767

 

    2)、 通过format()函数进行格式化输出。

#!/usr/bin/python3.5
# -*- coding:utf-8 -*-
# Function : The format output
# Date : 2017-02-10
# Author : Spencer Jiang

username = "Spencer Jiang"
age = 45
job = "IT Service"
salary = 231.32

info = '''
Name: {_username}
Age: {_age}
Job: {_job}
Salary: {_salary}
'''.format(_username = username, _age = age, _job = job, _salary = salary)

print(info)

  图片 15

 

五、流程控制:条件判断语句(if/elif/else):**

  每个条件后面都以冒号结束,换行(条件为真时要执行的代码,以缩进作为代码块标志,python官方建议缩进4个空格)

      示例1:猜年龄(数字)游戏(GuessAge.py)。

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
# Author: Spencer Jiang

age_of_spencer = 65         #先设定的年龄的数值
guess_age = int(input("guess an age: "))

if guess_age == age_of_spencer :
    print("Yes, You got it!")
elif guess_age > age_of_spencer :
    print("No, your number is a litter bigger")
else:
    print("No, your number is a litter smaller")

  图片 16

六、流程控制:for循环(for x in
range(10))、break、continue、pass:**

   当满足循环条件时,执行循环语句块的代码,当不满足循环条件时,循环语句就结束。

   for/while 循环外也可以跟一个else。

   break: 当执行break时,就结束整个循环;

   continue: 当执行continue,就结束本次循环,直接进行下次循环。

       pass:
表示点位符,什么都不执行,防止程序报错。

         示例1:输出0到15中的2、4、6、8等4个数字(PrintNumber.py)。

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
# Author: Spencer Jiang

for i in range(0,15,2):
    if i == 0 :                                  # 跳过 0 这个数字
        continue
    if i > 9 :                     # 大于9 就退出循环
        break
    else:
        print(i)

  图片 17

 七、流程控制:while循环、break、continue、pass(与for循环类似)

  while
循环,需要有一个计数器,或者在循环语句块中有终止while条件的语句,否则会一直运行下去。

      示例1(WhileLoop.py): 打印0~9数字

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
# Author: Spencer Jiang

count = 0          # 计数器

while True :
    print(count)
    count = count + 1
    if count > 9 :
        break

  图片 18

  示例2(GuessAgeWhile.py):猜年龄(数字): 只能猜3次机会。  

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
# Author: Spencer Jiang

age_of_spencer = 65

count = 0

while count < 3 :
    guess_age = int(input("guess an age: "))
    if guess_age == age_of_spencer :
        print("Yes, You got it!")
        break
    elif guess_age > age_of_spencer :
        print("No, your number is a litter bigger")
    else:
        print("No, your number is a litter smaller")
    count += 1
else:
    print("You guess to much times!!!")

  图片 19

  

   
示例2,每猜3次不正确后,弹出提示,看用户是否还要继续猜下去。如果用户输入的是“n”就表示停止。

#!/usr/bin/python3.5
# -*- coding: utf-8 -*-
# Author: Spencer Jiang

age_of_spencer = 65

count = 0

while count < 3 :
    guess_age = int(input("guess an age: "))
    if guess_age == age_of_spencer :
        print("Yes, You got it!")
        break
    elif guess_age > age_of_spencer :
        print("No, your number is a litter bigger")
    else:
        print("No, your number is a litter smaller")
    count += 1
    if count == 3 :
        continue_confirm = input("Do you want to continue to guess?")
        if continue_confirm != 'n' :
            count = 0
else:
    print("You guess to much times!!!")

  图片 20

八、 Python代码注释: 

  #          单行注释用 井号“#” 开头

   ”’ 或者 “””     
多行注释采用3对单引号或3对双引号将要注释的行包围进来。

       同时3对引号,也可以表示对字符串的赋值(段落文字),如:

info = """ your information :
name : jmw
age : 32
"""    

九、作业:

  1、模拟用户登录接口:1)由用户输入用户名、密码;2)登录成功,则显示欢迎信息;3)登录失败超过3次就要锁定账号。

      2、三级菜单:省、市、县3级地区为菜单。

(本节完)

                     

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图