当前位置 博文首页 > Python基础之常用库常用方法整理

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

    作者:336699强强 时间:2021-06-11 17:48

    一、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')
    

    在这里插入图片描述

    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)
    
    js
    下一篇:没有了