热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:学习python测试开发

篇首语:本文由编程笔记#小编为大家整理,主要介绍了学习python 测试开发相关的知识,希望对你有一定的参考价值。 https://ke.qq.com/course/263945#tuin=107a3

篇首语:本文由编程笔记#小编为大家整理,主要介绍了学习python 测试开发相关的知识,希望对你有一定的参考价值。



https://ke.qq.com/course/263945#tuin=107a3c8a

https://testerhome.com/topics/11327

python版本:2.7.*

第一节

python开发速度快,是因为开源模块多,我们站在了巨人的肩膀上,所以在实现某个功能的时候,先去python的仓库里看是否已实现。
开源仓库 http://pypi.python.org/pypi

GUI:指可视化图形工具

如果用python做性能测试,建议用工具有:Locust

 

 

 

python也可对java、c\\c++代码进行单元测试

 CSDN的登录操作,需要带‘lt’的值:

 

 

遇到的问题及解决办法:

1. ImportError: No module named \'requests\'

https://www.baidu.com/link?url=oPgkXcZT5bticBF8uBDbKNtmkw6oHD8HlJ9K349MgNU7zPFSxF7ragT4Dk6mId41FLCaiZPExomWp5aX7aRVZ_&wd=&eqid=ba2d8ab700004b10000000065a548587

pip 安装中:

 

第三方库安装后,会在该目录下,也可查看修改

 

http://blog.csdn.net/huangzhang_123/article/details/64905767     python request使用介绍

python request模块通过模拟用户访问web网站,实际运用到Html的post,get的方法实现网站互动。














首先要找到post网址 
打开网页->按F12(找到网络(火狐为例))->随意输入帐号密码->点击登录 

 

 

按照上面的方法,获得CSDN登录按钮的form提交网址:

 

2.post请求似乎不成功,不知道header中User-Agent和accept是否正确,未解决???



#!/usr/bin/env python
#
coding=utf-8
import requests
import sys
login_home_url
="https://passport.csdn.net/account/login?ref=toolbar"
#创建一个session实例,session能记录你的登录账号信息(因为http是短链接,无法记录COOKIE)
#
之前的操作都是基于同一个session进行的,保持会话的有效性
web_sessiOns= requests.Session()
#打开登录页面
LoginPage = web_sessions.get(login_home_url)
print("line14")
# 获取响应的内容,以文本格式
print(LoginPage.text)
#获取当前页面上的元素:元素lt\\execution的值
lt_sting = LoginPage.text[LoginPage.text.find(\'name="lt"\'): LoginPage.text.find("/>",LoginPage.text.find(\'name="lt"\'))]
print("lt_sting: ",lt_sting)
print("*"*30)
lt
= lt_sting[lt_sting.find("LT"):-2]
print("lt: ",lt)
exe_sting
= LoginPage.text[LoginPage.text.find(\'name="execution"\'): LoginPage.text.find("/>",LoginPage.text.find(\'name="execution"\'))]
print("exe_sting: ",exe_sting)
execution
=exe_sting[exe_sting.rfind(\'="\')+2:-2]
print("execution: ",execution)
#提交的用户信息、submit的网站
login_url = "https://passport.csdn.net/account/verify"
userData
={"username":"…………@qq.com","password":"qa……","lt":lt,"execution":execution,"_eventId":"submit"}
#火狐浏览器User-Agent设置
headerstr= {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0","Accept": "text/html, application/xhtml+xml, */*"}
#提交post请求
login_respOnse= web_sessions.post(login_url,data=userData,headers=headerstr)
print(login_response.text) #该post请求后响应的结果,不满足预期,待解决。。》》》》
# comment_url = "http://blog.csdn.net/fromsuny_smile/article/details/79014217"
#
comment_headers= {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0","Accept": "*/*"}
#
comment_payload ={"commentid":"","content":u"很好啦","replyId":""}
#
comment_respOnse= web_sessions.post(comment_url,data = comment_payload, headers =comment_headers)
#
print(comment_response.text)


View Code

 --------------用appium和selenium进行用户操作的模拟,代码如下,如果有基础,很容易看懂的

appium登录豆瓣账号如下:



#!/usr/bin/env python
#
coding=utf-8
from appium import webdriver
import time,sys
reload(sys)
sys.setdefaultencoding(
\'utf-8\')
usename
="xxx"
passwd
="xxx"
sleep_time
=2
desired_caps
= {}
desired_caps[
\'platformName\'] = \'Android\'
desired_caps[
\'platformVersion\'] = \'6.0\'
desired_caps[
\'deviceName\'] = \'Android Emulator\'
#desired_caps[\'app\'] = r"D:\\study\\cy\\training\\ceba\\code\\src\\appium\\douban_117.apk"
desired_caps[\'appPackage\'] = \'com.douban.frodo\'
desired_caps[
\'appActivity\'] = \'.MainActivity\'
driver
= webdriver.Remote(\'http://localhost:4723/wd/hub\', desired_caps)
driver.find_element_by_android_uiautomator(
\'new UiSelector().text("我的")\').click()
time.sleep(sleep_time)
#driver.find_element_by_android_uiautomator(\'new Uiseletor().resourceId("com.douban.frodo:id/title").textContains(u"我的")\').click()
driver.find_element_by_id("com.douban.frodo:id/unlongin_name").click()
time.sleep(sleep_time)
usename_element
= driver.find_element_by_id("com.douban.frodo:id/input_user_name")
usename_element.clear()
usename_element.send_keys(usename)
password_element
= driver.find_element_by_id("com.douban.frodo:id/input_password")
password_element.clear()
password_element.send_keys(passwd)
driver.find_element_by_id(
"com.douban.frodo:id/sign_in_douban").click()
time.sleep(sleep_time)


appium+python

selenium登录微博如下:



#!/usr/bin/env python
#
coding=utf-8
from selenium import webdriver
import unittest, time, re
class WeiboTestCase(unittest.TestCase):
def setUp(self):
print "2222"
self.driver
= webdriver.Chrome()
self.driver.implicitly_wait(
30)
self.verificationErrors
= []
self.accept_next_alert
= True
def test_untitled_test_case(self):
driver
= self.driver
print "i ma here"
driver.get(
"https://weibo.com/login.php")
driver.find_element_by_id(
"loginname").click()
driver.find_element_by_id(
"loginname").click()
driver.find_element_by_id(
"loginname").clear()
driver.find_element_by_id(
"loginname").send_keys("xxxxx")
driver.find_element_by_name(
"password").clear()
driver.find_element_by_name(
"password").send_keys("xxxx")
driver.find_element_by_id(
"login_form_savestate").click()
driver.find_element_by_xpath(
"//div[@id=\'pl_login_form\']/div/div[3]/div[6]/a").click()
driver.find_element_by_xpath(
"//textarea[@name=\'\']").clear()
driver.find_element_by_xpath(
"//textarea[@name=\'\']").send_keys("Welcome to learn Python")
driver.find_element_by_link_text(u
"发布").click()
def tearDown(self):
self.driver.quit()
self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
print "11111"
unittest.main()


selenium登录微博

 

这里的入门级的代码,用作熟悉appium的使用
但如果作为企业级的自动化工具,要采用框架,例如把公共函数、方法提炼出来。


没有轻轻松松就能拿高工资,必须有大力的付出,
没有写过大量代码的测试开发,是没有生产力的。
提高自身代码量。

使用bing.com搜索
用英文关键字搜索
尽量看原英文文档



推荐阅读
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 本指南介绍了 `requests` 库的基本使用方法,详细解释了其七个主要函数。其中,`requests.request()` 是构建请求的基础方法,支持其他高级功能的实现。此外,我们还重点介绍了如何使用 `requests.get()` 方法来获取 HTML 网页内容,这是进行网页数据抓取和解析的重要步骤。通过这些基础方法,读者可以轻松上手并掌握网页数据抓取的核心技巧。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • Webdriver中元素定位的多种技术与策略
    在Webdriver中,元素定位是自动化测试的关键环节。本文详细介绍了8种常用的元素定位技术与策略,包括ID、名称、标签名、类名、链接文本、部分链接文本、XPath和CSS选择器。每种方法都有其独特的优势和适用场景,通过合理选择和组合使用,可以显著提高测试脚本的稳定性和效率。此外,文章还探讨了在复杂页面结构中如何灵活运用这些定位技术,以应对各种挑战。 ... [详细]
  • 该大学网站采用PHP和MySQL技术,在校内可免费访问某些外部收费资料数据库。为了方便学生校外访问,建议通过学校账号登录实现免费访问。具体方案可包括利用学校服务器作为代理,结合身份验证机制,确保合法用户在校外也能享受免费资源。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
  • 在PHP中实现腾讯云接口签名,以完成人脸核身功能的对接与签名配置时,需要注意将文档中的POST请求改为GET请求。具体步骤包括:使用你的`secretKey`生成签名字符串`$srcStr`,格式为`GET faceid.tencentcloudapi.com?`,确保参数正确拼接,避免因请求方法错误导致的签名问题。此外,还需关注API的其他参数要求,确保请求的完整性和安全性。 ... [详细]
  • 技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告
    技术日志:使用 Ruby 爬虫抓取拉勾网职位数据并生成词云分析报告 ... [详细]
  • 在本文中,我们将为 HelloWorld 项目添加视图组件,以确保控制器返回的视图路径能够正确映射到指定页面。这一步骤将为后续的测试和开发奠定基础。首先,我们将介绍如何配置视图解析器,以便 SpringMVC 能够识别并渲染相应的视图文件。 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • 本文详细解析了 Python 2.x 版本中 `urllib` 模块的核心功能与应用实例,重点介绍了 `urlopen()` 和 `urlretrieve()` 方法的使用技巧。其中,`urlopen()` 方法用于发送网络请求并获取响应内容,而 `urlretrieve()` 方法则用于下载文件并保存到本地。文章通过具体示例展示了这两个方法在实际开发中的应用场景,帮助读者更好地理解和掌握 `urllib` 模块的使用。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
author-avatar
Not-Only-For曾广超
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有