Python分类测试代码实例汇总


Posted in Python onJuly 23, 2020

1.自动化测试里面的测试用例设计的一些方法

解耦、可以独立运行、需要灵活切换

设计思路: 脚本功能分析(分步骤)和模块化分层(拆分为多模块)

project

login_order.py #登录下单测试用例
category.py #菜单分类测试用例

all_test.py #主入口

login_order.py

# -*- coding: UTF-8 -*-
import unittest
import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains


class LoginOrderTestCase(unittest.TestCase):
  def setUp(self):
    print("测试开始")
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(20)
    self.base_url = "https://xdclass.net"
    self.driver.get(self.base_url)

  def tearDown(self):
    print("单个测试用例结束")
    pass
    #单个测试用例结束
  
  def test_login_order(self):
    u"登录测试用例"
    driver = self.driver
    #登录框
    login_ele = driver.find_element_by_css_selector("#login")
    ActionChains(driver).click(login_ele).perform()

    sleep(2)
    #查找输入框,输入账号,输入框要提前清理里面的数据
    driver.find_element_by_id("phone").clear()
    driver.find_element_by_id("phone").send_keys("13113777338")
    #查找密码输入框,输入密码
    driver.find_element_by_id("pwd").clear()
    driver.find_element_by_id("pwd").send_keys("123456789")

    #拿到登录按钮
    login_btn_ele = driver.find_element_by_css_selector("button.login")
    #触发点击事件,登录
    login_btn_ele.click()
    #判断登陆是否成功,逻辑-》鼠标移到上面,判断弹窗字符
    #获取鼠标上移的元素
    user_info_ele = driver.find_element_by_css_selector(".user_head_portrait")
    sleep(1)
    #hover触发
    ActionChains(driver).move_to_element(user_info_ele).perform()
    sleep(1)
    #获取用户名称元素
    user_name_ele = driver.find_element_by_css_selector(".img_name > span:nth-child(2)")
    print("===测试结果==")
    print(user_name_ele.text)

    name = user_name_ele.text
    #self.assertEqual(name, u"二当家小D",msg="登录失败")

    video_ele = driver.find_element_by_css_selector("div.hotcourses:nth-child(3) > div:nth-child(2) > div:nth-child(1) > ul:nth-child(1) > li:nth-child(1) > a:nth-child(1) > div:nth-child(1) > img:nth-child(1)")
    video_ele.click()
    sleep(2)

    buy_btn_ele = driver.find_element_by_css_selector(".learn_btn > a:nth-child(1)")

    buy_btn_ele.click()
    print("进入下单页面")
    
if __name__ == '__main__':
    unittest.main()

category.py

# -*- coding: UTF-8 -*-
import unittest
import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.action_chains import ActionChains

class CategoryTestCase(unittest.TestCase):
  def setUp(self):
    print("测试开始")
    self.driver = webdriver.Firefox()
    self.driver.implicitly_wait(20)
    self.base_url = "https://xdclass.net"
    self.driver.get(self.base_url)


  def tearDown(self):
    print("测试结束")
    #单个测试用例结束
    self.driver.quit()

  def test_menu(self):
    u"弹出菜单测试用例"
    driver = self.driver
    #跳转网页
    sleep(1)

    #定位到鼠标移动到上面的元素
    menu_ele = driver.find_element_by_css_selector("#banner_left_ul > a:nth-child(1) > li:nth-child(1) > span:nth-child(1)")

    #对定位到的元素执行鼠标移动到上面的操作
    ActionChains(driver).move_to_element(menu_ele).perform()
    sleep(2)
    #选中子菜单
    sub_meun_ele = driver.find_element_by_css_selector("#des > li:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > a:nth-child(1)")

    sub_meun_ele.click()
    sleep(2)


if __name__ == '__main__':
  unittest.main()

all_test.py

# -*- coding: UTF-8 -*-
import unittest
import HTMLTestRunner
import login_order ,category
import time

#创建测试集合  
def create_suite():
  print("测试开始")
  suite = unittest.TestSuite()
  suite.addTest(unittest.makeSuite(login_order.LoginOrderTestCase))
  suite.addTest(unittest.makeSuite(category.CategoryTestCase))
  return suite
   

if __name__ == '__main__':
  suite = create_suite()

  #文件名中加了当前时间,为了每次生成不同的测试报告
  file_prefix = time.strftime("%Y-%m-%d %H_%M_%S", time.localtime())

  #创建测试报告,此时这个文件还是空文件 wb 以二进制格式打开一个文件,只用于写入,如果文件存在则覆盖,不存在则创建
  fp = open("./"+file_prefix+"_result.html","wb")
  
  # stream定义一个测试报告写入的文件,title就是标题,description就是描述
  runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u"小D课堂 测试报告",description=u"测试用例执行情况",verbosity=2)
  runner.run(suite)
  fp.close()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python通过websocket与js客户端通信示例分析
Jun 25 Python
python脚本实现分析dns日志并对受访域名排行
Sep 18 Python
python判断字符串是否纯数字的方法
Nov 19 Python
python实现将元祖转换成数组的方法
May 04 Python
python分析网页上所有超链接的方法
May 08 Python
python类继承用法实例分析
May 27 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
Python3安装pip工具的详细步骤
Oct 14 Python
Python argparse模块使用方法解析
Feb 20 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 Python
基于Python3读写INI配置文件过程解析
Jul 23 #Python
Linux安装Python3如何和系统自带的Python2并存
Jul 23 #Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 #Python
Python 绘制可视化折线图
Jul 22 #Python
python写文件时覆盖原来的实例方法
Jul 22 #Python
python中return不返回值的问题解析
Jul 22 #Python
Java byte数组操纵方式代码实例解析
Jul 22 #Python
You might like
PHP面向对象教程之自定义类
2014/06/10 PHP
thinkPHP模型初始化实例分析
2015/12/03 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
Laravel框架实现model层的增删改查(CURD)操作示例
2018/05/12 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
JavaScript 学习笔记(六)
2009/12/31 Javascript
js获取某月的最后一天日期的简单实例
2013/06/22 Javascript
js实现带圆角的多级下拉菜单效果
2015/08/28 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单)
2015/09/25 Javascript
AngularJS通过$http和服务器通信详解
2016/09/21 Javascript
JS去除重复并统计数量的实现方法
2016/12/15 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
详解Require.js与Sea.js的区别
2018/08/05 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
详解JQuery基础动画操作
2019/04/12 jQuery
JS 事件机制完整示例分析
2020/01/15 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
Python中的random()方法的使用介绍
2015/05/15 Python
python创建临时文件夹的方法
2015/07/06 Python
使用tensorflow实现AlexNet
2017/11/20 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
django rest framework 数据的查找、过滤、排序的示例
2018/06/25 Python
老生常谈python中的重载
2018/11/11 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
Farfetch巴西官网:奢侈品牌时尚购物平台
2020/10/19 全球购物
刚毕业大学生自荐信范文
2014/02/20 职场文书
高中毕业生的个人自我评价
2014/02/21 职场文书
原生CSS实现文字无限轮播的通用方法
2021/03/30 HTML / CSS
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL