1. #登录方法的封装
  2.  
  3. from appium import webdriver
  4. from time import sleep
  5. from python_selenium.Slide import swipeLeft
  6.  
  7. def login(user,pwd):
  8. caps = {
  9. "platformName": "Android",
  10. "deviceName": "127.0.0.1:21503",
  11. "platformVersion": "5.1.1",
  12. "appPackage": "com.yw.yzz",
  13. "appActivity": "com.yw.yzz.biz.splash.SplashActivity",
  14. "unicodeKeyboard": "True",
  15. "resetKeyboard": "True",
  16. "noReset": "True"
  17. }
  18. dr = webdriver.Remote("http://127.0.0.1:4723/wd/hub",caps)
  19. dr.implicitly_wait(10)
  20. sleep(3)
  21. try:
  22. dr.find_element_by_id("com.yw.yzz:id/iv_img")
  23. sleep(2)
  24. except:
  25. dr.find_element_by_id("com.yw.yzz:id/seting_tab").click()
  26. else:
  27. swipeLeft(dr,3,1000)
  28. sleep(1)
  29. dr.find_element_by_id("com.yw.yzz:id/btn_open").click()
  30. sleep(4)
  31. dr.find_element_by_id("com.yw.yzz:id/seting_tab").click()
  32. sleep(1)
  33. dr.find_element_by_xpath('//android.widget.TextView[@resource-id="com.yw.yzz:id/tv_name"]').click()
  34. el2 = dr.find_element_by_id("com.yw.yzz:id/et_phone")
  35. el2.send_keys(user)
  36. el3 = dr.find_element_by_id("com.yw.yzz:id/et_password")
  37. el3.send_keys(pwd)
  38. el4 = dr.find_element_by_id("com.yw.yzz:id/btn_login")
  39. sleep(1)
  40. el4.click()
  41. try:
  42. dr.find_element_by_id("com.yw.yzz:id/tv_phone")
  43. except:
  44. raise AssertionError
  45. else:
  46. pass
  47. return dr
  1. #滑动方法封装
  2.  
  3. from time import sleep
  4.  
  5. def swipeLeft(dr,n,t):
  6. width = dr.get_window_size()["width"]
  7. height = dr.get_window_size()["height"]
  8. for i in range(n):
  9. dr.swipe(width*0.9,height/2,width*0.1,height/2,t)
  10. sleep(1)
  11.  
  12. def swipeUp(dr,n,t):
  13. width = dr.get_window_size()["width"]
  14. height = dr.get_window_size()["height"]
  15. for i in range(n):
  16. dr.swipe(width*0.5,height*0.9,width*0.5,height*0.1,t)
  17. sleep(1)
  1. #用例输出
  2.  
  3. from python_selenium.yyt_login import login
  4. from time import sleep
  5. import unittest
  6.  
  7. class YYT(unittest.TestCase):
  8. def setUp(self):
  9. self.driver = login("1777982xxxx","xxxxxxx")
  10. sleep(1)
  11. el1 = self.driver.find_element_by_id("com.yw.yzz:id/iv_btn_setting")
  12. el1.click()
  13.  
  14. def test_ChangeName(self):
  15. el2 = self.driver.find_element_by_xpath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout")
  16. el2.click()
  17. el3 = self.driver.find_element_by_id("com.yw.yzz:id/ll_updateinfo_name")
  18. el3.click()
  19. el4 = self.driver.find_element_by_id("com.yw.yzz:id/et_my_changemyname")
  20. el4.clear()
  21. el4.send_keys("xxxx")
  22. el5 = self.driver.find_element_by_id("com.yw.yzz:id/top_right_tv")
  23. el5.click()
  24.  
  25. def test_ChangeSex(self):
  26. self.driver.tap([(0,131),(1080,281)],500)
  27. sleep(1)
  28. self.driver.find_element_by_id("com.yw.yzz:id/ll_updateinfo_gender").click()
  29. sleep(1)
  30. self.driver.find_element_by_id("com.yw.yzz:id/ll_choosegender_secret").click()
  31.  
  32. def tearDown(self):
  33. self.driver.back()
  34. sleep(1)
  35. el7 = self.driver.find_element_by_id("com.yw.yzz:id/exit_btn")
  36. el7.click()
  37. el8 = self.driver.find_element_by_id("com.yw.yzz:id/sure_button")
  38. el8.click()
  39. sleep(1)
  40. self.driver.quit()
  41.  
  42. if __name__ == '__main__':
  43. unittest.main()
  1. #批量运行用例及生成测试报告
  2.  
  3. import unittest
  4. import HTMLTestRunner
  5.  
  6. path = "D:\\work_doc\\CodeFile\\python_selenium"
  7. testcase = unittest.defaultTestLoader.discover(path,pattern="case.py",top_level_dir=None)
  8.  
  9. YYTtestreport = "d:\\testreport.html"
  10. with open(YYTtestreport,"wb") as YYT:
  11. runner = HTMLTestRunner.HTMLTestRunner(YYT,title="测试报告",description="详细报告")
  12. runner.run(testcase)

unittest管理用例生成测试报告的更多相关文章

  1. unittest 管理用例生成测试报告

    # 登录方法的封装 from appium import webdriver from time import sleep from python_selenium.Slide import swip ...

  2. Python3 完美解决unittest框架下不生成测试报告

    前提: 1.运行测试用例一切正常,只是没有测试报告显示 2.使用命令行pyhon 脚本名字.py 却可以生成测试报告 3.pycharm 在运行测试用例的时候 默认是以unittest 框架来运行的, ...

  3. unittest管理接口用例(数据分离-读取excel)

    1.简单读取 #coding=utf-8 #调用封装好的excel读取公共方法 from python_API.common.ReadExcel import ReadExcel import req ...

  4. (appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告

    前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件 ...

  5. 五、postman公共函数及newman运行与生成测试报告

    一.公共函数 postman中定义公共函数如下 1.每次断言的时候都需要重写或者复制之前的断言代码,可以通过如下方法定义断言的公共函数,以后每次断言的时候只需要调用公共函数即可进行断言 设置公共函数对 ...

  6. 记录python接口自动化测试--利用unittest生成测试报告(第四目)

    前面介绍了是用unittest管理测试用例,这次看看如何生成html格式的测试报告 生成html格式的测试报告需要用到 HTMLTestRunner,在网上下载了一个HTMLTestRunner.py ...

  7. python接口自动化测试(七)unittest 生成测试报告

    用例的管理问题解决了后,接下来要考虑的就是报告我问题了,这里生成测试报告主要用到 HTMLTestRunner.py 这个模块,下面简单介绍一下如何使用: 一.下载HTMLTestRunner下载: ...

  8. python语言(八)多线程、多进程、虚拟环境、unittest、生成测试报告

    一.多线程 进程与线程 进程:进程是资源(CPU.内存等)分配的最小单位,进程有独立的地址空间与系统资源,一个进程可以包含一个或多个线程 线程:线程是CPU调度的最小单位,是进程的一个执行流,线程依赖 ...

  9. Python+Selenium+Unittest+HTMLTestRunner生成测试报告+发送至邮箱,记一次完整的cnblog登录测试示例,

    测试思路:单个测试集.单个测试汇成多个测试集.运行测试集.生成测试报告.发送至邮箱. 第一步:建立单个测试集,以cnblog登录为例. 测试用例: cnblog的登录测试,简单分下面几种情况:(1)用 ...

随机推荐

  1. 如何计算假设检验的功效(power)和效应量(effect size)?

    做完一个假设检验之后,如果结果具有统计显著性,那么还需要继续计算其效应量,如果结果不具有统计显著性,并且还需要继续进行决策的话,那么需要计算功效. 功效(power):正确拒绝原假设的概率,记作1-β ...

  2. shell编程题(五)

    打印root可以使用可执行文件数. echo "root's bins: $(find ./ -type f | xargs ls -l | sed '/-..x/p' | wc -l)&q ...

  3. PyTorch学习之六个学习率调整策略

    PyTorch学习率调整策略通过torch.optim.lr_scheduler接口实现.PyTorch提供的学习率调整策略分为三大类,分别是 有序调整:等间隔调整(Step),按需调整学习率(Mul ...

  4. const 变量在多个文件共享,如何验证两种不同的方式下,编译器是否会在多个文件下建立多个副本

    对于const变量多个文件共享,当我们不希望编译器为每个文件分别生成独立的变量,而是像非常量对象一个,一处定义,多处声明并使用. 解决办法是,对于const变量,不管是声明还是定义都添加extern关 ...

  5. SpringMVC之使用ResponseEntity

    1.Post请求 一般情况下,在非必须的情况下,使用Jquery实现post请求,而后台返回一般都需要手动封装ResponseUtil,和使用@ResponseBody注解来实现返回.然而我们书上学到 ...

  6. Python argparse 处理命令行小结

    Python argparse 处理命令行小结 1. 关于argparse是python的一个命令行解析包,主要用于处理命令行参数 2. 基本用法test.py是测试文件,其内容如下: import ...

  7. [原创]K8Cscan插件之Host2IP(批量域名解析/主机名转IP)

    0x001 前言 在内网渗透中,有时候通过域或日志导出一些机器名,或者管理员备分文件等方式获取 只有主机名或者域名时,就需要先解析出IP获取相关IP或IP段,才好进行下一步扫描. 0x002 用法 首 ...

  8. Docker下安装kafka

    先看一下有哪些选择 额,没有官方的,但是可以根据stars来找一个,大多数人都选择第一个,我们看一下GitHub就知道了. 第一个:https://github.com/wurstmeister/ka ...

  9. JAVA WEB项目目录结构以及web应用部署的根目录,编译路径和项目根目录的区别

    本文链接:https://blog.csdn.net/l00149133/article/details/78984083 web应用部署的根目录,编译路径和项目的根目录有什么区别? 直接上例子: 你 ...

  10. c++中如何判断sqlite表是否存在

    在项目中遇到需要判断sqlite数据库中某个表是否存在,上网搜索一些资料后,解决了问题,如下: 首先,在每个sqlite数据库中,都有一个名为sqlite_master的表,它定义了数据库的模式,它的 ...