<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[txwsmsm7023_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/txwsmsm7023_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; txwsmsm7023_]]></copyright><item><title><![CDATA[Mac module ‘brotli‘ has no attribute ‘Error‘]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/121701612</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/121701612</guid><author>txwsmsm7023_</author><pubDate>Fri, 03 Dec 2021 16:24:08 +0800</pubDate><description><![CDATA[今天运行脚本的时候突然包了这个错，

不是安装brotli，安装python版本brotlipy


pip3 install brotlipy


]]></description><category></category></item><item><title><![CDATA[HTML中的{{}}用法]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/119907632</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/119907632</guid><author>txwsmsm7023_</author><pubDate>Wed, 25 Aug 2021 11:36:55 +0800</pubDate><description><![CDATA[将传过来的参数用{{}}接受，不管是在字符串中还是文本中，都会将{{}}中的变量的值输出来，例如


&lt;a href="/node/csv?page={{c_page.next_page_number}}"&gt;上一页&lt;/a&gt;

*注意：HTML中不能用（）+-*/等
]]></description><category></category></item><item><title><![CDATA[if __name__ == ‘__main__‘下面的代码没有执行（unittest）]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/118369105</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/118369105</guid><author>txwsmsm7023_</author><pubDate>Wed, 30 Jun 2021 20:47:24 +0800</pubDate><description><![CDATA[1、 今天用unittest框架做接口测试的时候，发现if __name__ == '__main__':下面的代码并没有执行，与事后我就开始百度，发现出现这类问题的原因是unittest运行姿势造成的

2、原因: 后来发现，之前所执行代码对应的方式是Run 'Unittests in xxx.py'，PyCharm默认执行Unittests类的单元测试，忽略了if __name__ == '__main__':的执行，也就没有执行整个xxx.py文件


3、解决办法

在PyCharm顶部的工具栏上，]]></description><category></category></item><item><title><![CDATA[Python3生成 HTMLTestRunner报告]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/118368811</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/118368811</guid><author>txwsmsm7023_</author><pubDate>Wed, 30 Jun 2021 20:36:34 +0800</pubDate><description><![CDATA[一、自动化测试结果以HTML测试报告就是执行完测试用例后以HTML（网页）方式将执行结果生成报告。
二、如何生成HTML报告？

   1、首先要下载HTMLTestRunner.py文件
      下载地址http://tungwaiyip.info/software/HTMLTestRunner.html
　　  右键单击保存至本地
   2、将HTMLTestRunner.py放在Python文件下，才可以生成报告，这里说一下pycharm下放置该文件。在pychar...]]></description><category></category></item><item><title><![CDATA[ddt.file_data方法处理yaml或者json]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/115115405</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/115115405</guid><author>txwsmsm7023_</author><pubDate>Tue, 23 Mar 2021 14:37:18 +0800</pubDate><description><![CDATA[一、ddt.file_data介绍
  ddt.file_data：装饰测试方法，参数是文件名。文件可以是 json 或者 yaml 类型。
	  注意：如果文件是以 “.yml”或者".yaml" 结尾，ddt 会作为 yaml 类型处理，其他文件都会作为 json 文件处理。　　
	  如果文件是列表，列表的值会作为测试用例参数，同时，会作为测试用例方法名后缀显示。　　　　
	  如果文件是字典，字典的 key 会作为测试用例方法的后缀显示，字典的 value 会作为测试用例参数...]]></description><category></category></item><item><title><![CDATA[Python with open()打开文件用法]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/115113404</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/115113404</guid><author>txwsmsm7023_</author><pubDate>Tue, 23 Mar 2021 11:19:16 +0800</pubDate><description><![CDATA[读文件:

要以读文件的模式打开一个文件对象，使用Python内置的open()函数，传入文件名和标示符：


&gt;&gt;&gt; f = open('E:\python\python\test.txt', 'r')

标示符'r'表示读，这样，我们就成功地打开了一个文件。

如果文件不存在，open()函数就会抛出一个IOError的错误，并且给出错误码和详细的信息告诉你文件不存在：






	f=open('E:\python\python\notfound.txt', 'r')
	
	
	.]]></description><category></category></item><item><title><![CDATA[Python内存分配]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114920191</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114920191</guid><author>txwsmsm7023_</author><pubDate>Wed, 17 Mar 2021 11:06:46 +0800</pubDate><description><![CDATA[目录

一、前言
	二、动态类型
	三、内存分配
	3.1 引用计数
		3.2 增加引用计数
		3.3 减少引用计数
	
	四、垃圾收集
一、前言

　　大多数编译型语言，变量在使用前必须先声明，其中C语言更加苛刻：变量声明必须位于代码块最开始，且在任何其他语句之前。其他语言，想C++和java,允许“随时随地”声明变量，比如，变量声明可以在代码块的中间，不过仍然必须在变量被使用前声明变量的名字和类型。在Python中，无序此类显式变量声明语句，变量在第一次被赋值时自动声明。和其他大多数语言一样，变量.]]></description><category></category></item><item><title><![CDATA[decode和encode的区别和介绍]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114652914</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114652914</guid><author>txwsmsm7023_</author><pubDate>Thu, 11 Mar 2021 09:55:33 +0800</pubDate><description><![CDATA[decode和encode的区别和介绍




by.decode(encoding='UTF-8',errors='strict')
str.encode(encoding='UTF-8',errors='strict')

显而易见decode是解码，encode是编码
	解码代表bytes类型转成str类型
	编码代表str类型转成bytes类型
	而bytes类型的数据一般在写入文件时需要用到

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -...]]></description><category></category></item><item><title><![CDATA[Python查看上一级目录]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114370275</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114370275</guid><author>txwsmsm7023_</author><pubDate>Thu, 04 Mar 2021 15:49:44 +0800</pubDate><description><![CDATA["""获取当前目录"""
print(os.getcwd())
print(os.path.abspath(os.path.dirname(__file__)))
"""获取上一级目录"""
print(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
print(os.path.abspath(os.path.dirname(os.getcwd())))
print(os.path.abspath(os.path.join(os.g.]]></description><category></category></item><item><title><![CDATA[reuqest-toolbet库生成multipart/form-data格式数据（Python）]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114318186</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114318186</guid><author>txwsmsm7023_</author><pubDate>Wed, 03 Mar 2021 17:02:04 +0800</pubDate><description><![CDATA[背景

 我们的后台可能都会涉及到一些图片呀、视频、语音等资源的上传，Reuqests是不支持的，但是有个第三方库会支持哦，那就是request-toolbet库



 首先，当然要安装第三方库,安装代码

pip install requests-toolbelt

查看是否安装成功，这个我没有找到比较好的查询方式，直接查看的pip安装的列表

pip list



  注意：因为我用的是pycharm,pip安装成功后，在pycharm里面直接导入并不能用哦，你要在pychar...]]></description><category></category></item><item><title><![CDATA[Python如何处理.netrc配置文件]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114011876</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/114011876</guid><author>txwsmsm7023_</author><pubDate>Wed, 24 Feb 2021 10:20:14 +0800</pubDate><description><![CDATA[什么是.netrc文件

 .netrc是个用户bai配置脚本文件，居du体用法zhi如下：
 1.default login &lt;loginname&gt; password &lt;password&gt;
   设置登陆站点dao的用户名和密zhuan码
 2.binary(asc)
   设置文件传输格式shu
 3.runique
   防止本机和远程同名的文件被覆盖。
 4.prompt off
  关闭提示。当使用mget时，总是有很多的提示，用...]]></description><category></category></item><item><title><![CDATA[HTTP协议是什么？]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/113984443</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/113984443</guid><author>txwsmsm7023_</author><pubDate>Tue, 23 Feb 2021 13:28:31 +0800</pubDate><description><![CDATA[什么是HTTP协议

什么是Http协议
Http协议即超文本传送协议 (HTTP-Hypertext transfer protocol) 。它定义了浏览器（即万维网客户进程）怎样向万维网服务器请求万维网文档，以及服务器怎样把文档传送给浏览器。从层次的角度看，HTTP是面向（transaction-oriented)应用层协议，它是万维网上能够可靠地交换文件（包括文本、声音、图像等各种多媒体文件）的重要基础。并且详细的规定了客户端浏览器与服务器之间互相通信的规则。

客户端与服务器端在Http协议下的交互]]></description><category></category></item><item><title><![CDATA[Python-面向对象和面向过程的理解]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/111871784</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/111871784</guid><author>txwsmsm7023_</author><pubDate>Mon, 28 Dec 2020 18:00:28 +0800</pubDate><description><![CDATA[面向对象：面向对象就是构成问题事务分解成各个对象，建立对象的目的不是为了完成一个步骤，而是为了描叙某个事物在整个解决问题的步骤中的行为。
	面向过程：面向过程不同于面向对象，面向过程分析出解决问题所需要的步骤，然后用函数把这些步骤一步一步实现，使用的时候一个一个依次调用就可以了。
	
	面向过程：

	　　　　优点：性能比面向对象高，因为类调用时需要实例化，开销比较大，比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发，性能是最重要的因素。　　　　缺点：没有面向对象易维护、易]]></description><category></category></item><item><title><![CDATA[appium 环境搭建]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/110144471</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/110144471</guid><author>txwsmsm7023_</author><pubDate>Thu, 26 Nov 2020 11:46:45 +0800</pubDate><description><![CDATA[appium 安装所需要的环境

安装node
    appium的运行是要依赖node的，所以要安装node

    1. 首先安装一下homebrew
   


/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

   2. 用brew 安装node


brew install node

   查看是否安装...]]></description><category></category></item><item><title><![CDATA[Python   zip（）用法总结]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/105664444</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/105664444</guid><author>txwsmsm7023_</author><pubDate>Tue, 21 Apr 2020 18:15:03 +0800</pubDate><description><![CDATA[一、zip(*iterables)函数详解

1、zip()函数的定义

从参数中的多个迭代器取元素组合成一个新的迭代器
	返回：一个zip对象，其内部元素为元组；可以转化成列表或元组
	传入参数：元组、列表、字典等迭代器
2、zip()函数的用法

当zip()函数中只有一个参数时，zip(iterable)从迭代器中依次取一个元组，组成一个元组。


当zip()函数有两个参数时，zip(a,...]]></description><category></category></item><item><title><![CDATA[Charles breakpoint打断点失败（想破头）]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/105564140</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/105564140</guid><author>txwsmsm7023_</author><pubDate>Thu, 16 Apr 2020 18:25:12 +0800</pubDate><description><![CDATA[最近想利用breakpoint打断点，但是设置了breakpoint成功了就是不能拦截请求（相信很你也遇到这个问题了，o(╥﹏╥)o），但是没有百度到答案，最后问了有经验的同时，在这里想总结一下
	原因：是因为URL中含有变化的参数，在打断点的时候，把参数去掉就可以啦，教程图如下
	1、右键想要连接的接口，点击Breakpoint，待其被打上对号，说明就设置成功了（这里截不了图，生气啊）


点击...]]></description><category></category></item><item><title><![CDATA[Python中@修饰符的使用]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/104900636</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/104900636</guid><author>txwsmsm7023_</author><pubDate>Mon, 16 Mar 2020 15:47:58 +0800</pubDate><description><![CDATA[定义：@是修饰符，后面跟定义好的函数，用来修饰其他函数
	作用：已被修饰的函数为参数，返回修饰函数的运行结果
	注意：运行时遇见@修饰符，就会调用函数
	创建函数修饰符的规则：
	（1）修饰符是一个函数
	（2）修饰符取被修饰函数为参数
	（3）修饰符返回一个新函数
	（4）修饰符维护被维护函数的签名
   


...]]></description><category></category></item><item><title><![CDATA[SDK]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/104752508</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/104752508</guid><author>txwsmsm7023_</author><pubDate>Mon, 09 Mar 2020 14:51:29 +0800</pubDate><description><![CDATA[一、SDK是什么
客户端SDK（Software Development Kit）是为第三方开发者提供的软件工具包。

现实中开发的SDK更多的是Second Development Kit，这类SDK其实就是把每个应用接入相同功能都要做一遍的工作抽离出来，然后提供给别人使用的公共组件。

他最大的价值都是代码复用和降低工作的复杂度、理解成本。

二、SDK测什么
客户端SDK测试，就是对提供给开...]]></description><category></category></item><item><title><![CDATA[视频播放器测试点梳理]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/104675784</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/104675784</guid><author>txwsmsm7023_</author><pubDate>Thu, 05 Mar 2020 16:19:15 +0800</pubDate><description><![CDATA[功能点
	视频资源可以正常获取，不管是服务器返回还是后台添加等
	视频的封面图、页面UI等正常
	视频时长加载的正确
	暂停：点击屏幕、点击暂停按钮
	恢复暂停：点击屏幕、点击暂停按钮，视频接着播放
	快进：点击进度条、视频右划快进
	后退：点击进度条、视频左划快进
	亮度调节：视频区域上划、下划
	声音调节：按键调节、视频区域上划、下划调节、静音
	视频最大化、最小化
	屏幕旋转：
	横竖屏
	...]]></description><category></category></item><item><title><![CDATA[URL schema 存在的意义]]></title><link>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/104532955</link><guid>https://blog.youkuaiyun.com/txwsmsm7023_/article/details/104532955</guid><author>txwsmsm7023_</author><pubDate>Thu, 27 Feb 2020 11:37:52 +0800</pubDate><description><![CDATA[1、URL schema：App的URL Scheme就如同网页的url链接一样，可以打开App或跳转到相应的页面。但是大部分APP没有公开自己的URL Scheme。

2、URL Scheme的作用

我们都知道苹果手机中的APP都有一个沙盒，APP就是一个信息孤岛，相互是不可以进行通信的。但是iOS的APP可以注册自己的URL Scheme，URL Scheme是为方便app之间互相调用而设...]]></description><category></category></item></channel></rss>