Python基础之常用库常用方法整理


Posted in Python onApril 30, 2021

一、os

__file__      
获取当前运行的.py文件所在的路径(D:\PycharmProjects\My_WEB_UI\ConfigFiles\ConfigPath.py)

os.path.dirname(__file__)
上面正在运行的.py文件的上一级(D:\PycharmProjects\My_WEB_UI\ConfigFiles)

os.path.join(xxx,u'ConfigFiles\elementLocation.ini')
在已获得的路径xxx上加上\ConfigFiles\elementLocation.ini

二、configparser

config = configparser.ConfigParser()
创建一个configparser对象

config.read(filename)
读取ini文件,filename为ini文件的路径

config.sections()
得到ini文件内的所有的section,以列表的形式返回

config.items(sectionName)
根据section的name得到其下的所有键值对,再用dict(config.items(sectionName))封装为字典形式

三、openpyxl

wb = load_workbook('a.xlsx')
读取文件a.xlsx

sheet = wb[sheetname]
根据名字拿到xlsx文件里对应的页

sheet.max_row
获取当前页的最大行数

sheet.max_column
获取当前页的最大列数

sheet.cell(row = xxx,column = xxx).value
获取单元格(xxx,xxx)中的值

sheet.cell(row = xxx,column = xxx).value =aa     #修改单元格里的值
wb.save(a.xlsx的路径名)                           #修改完要保存一下,否则修改不生效

openpyxl库中没有方法来获取去某一行的值,可以自定义:

row_data = []
for i in range(1,sheet.max_column+1):             #注意遍历列的时候从1开始
     cell_value = sheet.cell(row = xxx,column = i).value         #xxx就为具体想要获取的行
     row_data.append(cell_value)

四、loguru

logger.debug('this is a debug message')
logger.info('this is a info message')
logger.warning('this is a warning message')
logger.error('this is a error message')
logger.success('this is a success message')
logger.critical('this is a critical message')

Python基础之常用库常用方法整理

logger.add('xxx.log') 
在当前同级目录下创建一个xxx.log文件,并将接下来的日志打印到xxx.log里面

logger.add('lowPath/xxx.log')
在当前目录下创建一个文件夹lowPath,在其中创建xxx.log文件

logger.add(otherPath+'/xxx.log')
事先获取其他的目录otherPath,在otherPath下创建xxx.log

五、time

time.sleep(2)
强制休眠两秒

time.strftime('%Y-%m-%d_%H-%M-%S')
接受当前时间元组,并最终返回对应格式的字符串

六、unittest

基本概念:
testcase 测试用例,以test开头,执行顺序会按照方法名的ASCII码值来排序
test suite 测试套件,testloader把需要一起执行的测试用例加载到套件中,然后一起执行
test runner 执行测试用例并返回测试结果
test fixture 测试固件,对一个测试用例环境的搭建和销毁

常见断言: assertEqual(a,b,msg=None) 判断a和b是否相等 assertNotEqual assertTrue(a)
判断a是否为True assertFalse assertIs(a,b)
判断a is b assertIsNot assertIsNone(a)
判断a is None assertIsNotNone assertIn(a,b)
判断a in b assertNotIn assertIsInstance(a,b)
判断a是不是b的实例 assertIsNotInstance 断言失败会报AssertionError的错

编写测试用例

class TestDemo(unittest.TestCase):
继承unittest模块里的TestCase

		def setUp(self) 
		准备环境,执行测试用例的前置条件

		def tearDown(self)
		环境还原,执行测试用例的后置条件

 		def test_01(self)
 		测试用例1
 		
 if __name__ == '__main__':
       unittest.main()
       执行当前文件以test开头的测试用例
 
 ########################################以下是实例##############################################
import time
import unittest

from selenium import webdriver

from Modules.LoginAction import LoginAction


class Login_test(unittest.TestCase):

    def setUp(self):
        '''
        准备好环境,执行测试用例的前置条件
        :return:
        '''
        self.driver = webdriver.Chrome()
        self.driver.get('https://mail.163.com/')
        self.driver.maximize_window()

    def tearDown(self):
        time.sleep(2)
        self.driver.quit()

    def test_01(self):
        loginAction = LoginAction()
        loginAction.do_login(self.driver, 'lsqtester001', 'qwer123')
        time.sleep(2)
        self.assertIn('lsqtester002',self.driver.page_source)

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

组织测试用例

suit = unittest.TestSuite()
定义一个测试套件

suit.addTest(Login_test('test_01'))
向套件中添加测试用例

runner = unittest.TextTestRunner()
runner.run(suit)
定义testrunner并执行已加入测试套件的测试用例

loader = unittest.TestLoader()
定义一个testloader对象
suit.addTest(loader.discover(TestcasesPath,pattern='Unittest*.py'))
根据条件将测试用例加载到套件中


########################################以下是实例##############################################
import unittest

from ConfigFiles.ConfigPath import TestcasesPath
from TestCases.Unittest_login import Login_test



if __name__ == '__main__':
    # suit = unittest.TestSuite()
    # #向套件中添加测试用例
    # suit.addTest(Login_test('test_01'))
    # suit.addTest(Login_test('test_02'))
    #
    # runner = unittest.TextTestRunner()
    # runner.run(suit)

    '''
    用discover来组织测试用例
    discover(dir,pattern='Unittest*.py',top_level_dir=None)
    dir就是存放写用例的python文件的具体路径
    pattern就是在目录dir下找形式如同Unittest*.py这样的文件
    如果符合条件的.py文件里有load_test这个函数的话,就会加载该文件里的测试用例
    如果不存在load_test函数的话,就会默认加载文件里以test开头的测试用例函数
    '''
    suit = unittest.TestSuite()
    loader = unittest.TestLoader()
    suit.addTest(loader.discover(TestcasesPath,pattern='Unittest*.py'))

    runner = unittest.TextTestRunner()
    runner.run(suit)

到此这篇关于Python基础之常用库常用方法整理的文章就介绍到这了,更多相关Python常用库常用方法整理内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
使用Python脚本和ADB命令实现卸载App
Feb 10 Python
python爬虫实战之最简单的网页爬虫教程
Aug 13 Python
Python 实现Windows开机运行某软件的方法
Oct 14 Python
python3实现zabbix告警推送钉钉的示例
Feb 20 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
谈一谈基于python的面向对象编程基础
May 21 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
python之PyQt按钮右键菜单功能的实现代码
Aug 17 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python多线程的退出控制实现
Aug 10 Python
Django 实现jwt认证的示例
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 #Python
python绘图subplots函数使用模板的示例代码
教你怎么用Python处理excel实现自动化办公
解决python绘图使用subplots出现标题重叠的问题
python数据库批量插入数据的实现(executemany的使用)
Apr 30 #Python
Python如何把不同类型数据的json序列化
Apr 30 #Python
You might like
PHP 获取MSN好友列表的代码(2009-05-14测试通过)
2009/09/09 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
php生成curl命令行的方法
2015/12/14 PHP
thinkphp实现分页显示功能
2016/12/03 PHP
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
JS+CSS模拟可以无刷新显示内容的留言板实例
2015/03/03 Javascript
举例讲解JavaScript substring()的使用方法
2015/11/09 Javascript
整理Javascript流程控制语句学习笔记
2015/11/29 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
bootstrap中模态框、模态框的属性实例详解
2017/02/17 Javascript
Vue header组件开发详解
2018/01/26 Javascript
在vue项目中引入highcharts图表的方法(详解)
2018/03/05 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
详解ES6 系列之异步处理实战
2018/10/26 Javascript
javascript this指向相关问题及改变方法
2020/11/19 Javascript
Python中的面向对象编程详解(上)
2015/04/13 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
python面向对象之类属性和类方法案例分析
2019/12/30 Python
Django中的session用法详解
2020/03/09 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
Python 利用Entrez库筛选下载PubMed文献摘要的示例
2020/11/24 Python
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
领导班子个人查摆问题对照检查材料
2014/10/02 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js