跳到主要内容

qa

Python出现ModuleNotFoundError_Nomodulenamed问题的解决办法

原因

IDE环境下,例如pycharm下,会自动搜索代码所在目录,寻找相关的包,而Linux环境下,直接运行.py文件,只会搜索默认的路径 此时需要把代码所在目录添加到sys.path当中

解决步骤

进入python ,import sys并且查看print (sys.path)
进入上述打印出的路径的site-packages目录下 cd /home/uname/anaconda3/envs/tf/lib/python3.6/site-packages
增加.pth文件 vim code_path.pth
在该文件下添加你的代码目录并保存/home/uname/code_dic/

Jenkins的Docker版,容器和宿主机时间一致,但是jenkins的构建时间依然相差8小时

Q:检查系统属性的user.timezone。有问题的为ETC或者其他非Shanghai的时区,正确的应该为Asia/Shanghai

图片

A:修改方式为修改容器内的/etc/timezone内容为:Asia/Shanghai

如果容器中没有这个文件,可以拷贝宿主机的timezone文件到容器中,最终达到以下效果

[root@localhost ~]# cat /etc/timezone
Asia/Shanghai

[root@localhost ~]# docker exec 7d07d7c23799 cat /etc/timezone
Asia/Shanghai
[root@localhost ~]#

解决容器中无法显示中文的问题

docker exec -it 5fbf5107cc17 env LANG=zh_CN.utf8 /bin/bash
增加语言的环境变量

查看当前环境支持的语言编码
locale -a

查看当前的编码:
locale

问题现象

在容器中执行command,报以下错误:'ascii' codec can't encode characters in position 701-702: ordinal not in range(128)

解决办法

在进入容器是携带环境变量env LANG=zh_CN.utf8,当然永久的解决办法是在Dockerfile中就增加环境变量

docker exec -it 5fbf5107cc17 env LANG=zh_CN.utf8 /bin/bash
[root@5fbf5107cc17 /]# locale
LANG=zh_CN.utf8
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=
[root@5fbf5107cc17 /]# source /home/openrc
[root@5fbf5107cc17 /]# openstack server list

这样就可以显示中文了

导入导出python依赖库

导出所有依赖库到requirement.txt:

pip freeze > requirements.txt

从requirement.txt导入:

pip install -r requirements.txt

判断服务器是否开启超线程

1、物理CPU数

$ cat /proc/cpuinfo | grep "physical id" | sort | uniq
physical id : 0
physical id : 1
1
2
3

以上输出信息,代表当前的机器拥有两个物理CPU

2、单个CPU的逻辑核心数量

$ cat /proc/cpuinfo | fgrep "cores" | uniq
cpu cores : 6
1
2

以上输出信息,代表当前机器的每个CPU拥有6个逻辑核心,如果物理CPU的逻辑核心数量不同,则会显示多行

3、系统CPU线程数

$ cat /proc/cpuinfo | grep "processor" | wc -l
12
1
2

以上输出信息,代表当前机器拥有12个CPU线程

通过综合以上信息,可以发现,这台机器拥有2和物理CPU,每个CPU有6个逻辑核心,系统一共拥有12个CPU线程。显然没有开启多线程。如果线程数是物理核数×单个CPU的逻辑核数量的整数倍,说明开启了超线程。

容器启动携带root权限

参数:--privileged=true

docker run   -u root   --rm   -d   -p 8888:8080   -p 50000:50000   -v jenkins-data:/var/jenkins_home   -v /var/run/docker.sock:/var/run/docker.sock --privileged=true  jenkinsci/blueocean

docker run -u root --restart always -d -p 8888:8080 -p 50000:50000 -v jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --privileged=true jenkinsci/blueocean

python判断网络连通性

import os
def judgeNet(ip,pkg=5):
'''
ret 0 means: ok
ret not 0 means: not ok
'''
cmd = "ping {} -c {}".format(ip,pkg)
res = os.system(cmd)
return res

python获取资源利用率

代码:

import psutil,time
import re,string

# while True:
# time.sleep(1)
# print(psutil.cpu_percent())

print(psutil.pids())
p = psutil.Process()
def get_pid(name):
process_list = list(psutil.process_iter())
print(process_list)
regex = "pid=(\d+),\sname=\'" + name + "\'"
print(regex)
pid = 0
for line in process_list:
process_info = str(line)
ini_regex = re.compile(regex)
result = ini_regex.search(process_info)
if result != None:
pid = result.group(1)
print(pid)
print(result.group())
return int(pid)


# while result != None:
# pid = result.group(1)
# print(pid)
# print(result.group())
# break

def get_cpu_percent_by_id(pid):
p = psutil.Process(pid)
try:
per = p.cpu_percent()
except Exception as e:
print(e)
return per

pid = get_pid('pycharm64.exe')
print(type(pid))

num=0
while True:
time.sleep(1)
num+=1
per = get_cpu_percent_by_id(pid=pid)
print(num ,per)

python控制台打印带颜色的字

from fabric.colors import green
print(green("This text is green!"))

创建本地分支和远端分支关联,修改代码并且推送到指定分支

创建本地分支和远端关联:

git checkout -b localdev origin/dev          创建本地localdev分支和远端的dev分支关联

提交本地代码到远端指定分支:

git push -u origin localdev:dev   或者  git push             推送代码,localdev:dev 前面的localdev代表本地分支,后面的dev代表远端的分支

Ride安装[robotframework]

python3.7安装RF 查看Python版本,确保是3.7。 (3.8以上版本安装之后ride UI edit功能有问题,无法使用)

1、pypi镜像源pip下载太慢了,先跟新镜像源为国内镜像源,以下是跟新pip镜像源为阿里云

①先在 windows “文件资源管理器” 地址栏 输入 %APPDATA% 按回车,打开程序自定义设置文件夹 然后,创建名为 pip 的文件夹,用于存放 pip 配置文件 ②新建 pip 配置文件 在刚才创建好的 pip 文件夹中,新建名为 pip.ini 的配置文件 在 pip.ini 文件中输入以下内容,然后保存

[global]
index-url=https://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host=mirrors.aliyun.com

2、安装robot

pip install robotframework

3、安装robotframework-ride

pip install robotframework-ride

4、启动RF UI

在python安装目录,Scripts文件夹下面启动ride.py 如果有如下启动错误信息 wx._core.wxAssertionError: C++ assertion "GetEventHandler() == this" failed at ....\src\common\wincmn.cpp(478) in wxWindowBase::~wxWindowBase(): any pushed event handlers must have been removed 请在python安装目录Lib\site-packages\robotide\application\文件下修改application.py 将 self._initial_locale = wx.Locale(wx.LANGUAGE_ENGLISH) 修改为 self.locale = wx.Locale(wx.LANGUAGE_ENGLISH)

5、如无桌面启动图标,请将ride.py发送到桌面

右键发送到桌面的图标,目标写入"D:\Program Files (x86)\Python37\pythonw.exe" -c "from robotide import main; main()",应用 注:D:\Program Files (x86)\Python37\pythonw.exe是我的Python启动程序路径,如果此路径中有空格,一定要用"D:\Program Files (x86)\Python37\pythonw.exe",否则windows无法识别.

jenkins+Allure

1、下载allure插件

名称:allure-jenkins-plugin.hpi

将插件安装到jenkins

2、测试机安装allure_robotframework

安装:pip3 install allure_robotframework

3、测试机安装allure-commandline

allure-commandline实际就是allure

参考:https://docs.qameta.io/allure/#_installing_a_commandline

4、jenkins配置

参考:https://blog.csdn.net/baidu_27032161/article/details/101024865

5、allure-results does not exists问题解决

参考:https://blog.csdn.net/weixin_30230009/article/details/104765883

6、allure测试报告无数据解决

mkdir -p /home/code && cd /home/code  && rm -rf *

git clone ssh://git@xxx.git

#robot -i ST -d /home/test_result/ /home/code/chaosmonkey/TestModules

cd /home/code/chaosmonkey/TestModules/

#echo $WORKSPACE

#robot --listener allure_robotframework -i CleanUp -d /home/test_result/ -o $WORKSPACE/target/allure-results/ /home/code/chaosmonkey/TestModules

robot --listener allure_robotframework:$WORKSPACE/target/allure-results -i CleanUp -d /home/test_result/ /home/code/chaosmonkey/TestModules

#注意robot的listener监听了allure的result的目录,格式为:--listener allure_robotframework:{allure的result的目录}

7、jenkins结合RF必须装的插件

插件地址:https://updates.jenkins.io/download/plugins/

图片

图片

图片

8、jenkins无法显示CSS样式的问题解决

参考:https://testerhome.com/topics/9476

其他参考:https://blog.csdn.net/baidu_27032161/article/details/101024865

9、jenkins时间与宿主机不一致的解决办法

脚本命令行执行以下命令:

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone','Asia/Shanghai'

Jenkins根据构建号,生成递增的版本号

首先指定一个大版本号,比如V4.2作为参数化构建参数cversion

然后在构建步骤中,使用version拼接Jenkins内部全局变量BUILD_NUMBER,形成完整版本号

但是BUILD_NUMBER在下个版本开始的时候不会自动恢复成1,这个时候需要我们手动执行脚本将其设置为1

系统管理-->脚本命令行,输入以下脚本并运行

Jenkins.instance.getItemByFullName("project_name").updateNextBuildNumber(1034)

nmon+nmonanalyser对linux服务器资源数据进行采集

1、安装nmon到linux

2、执行采集命令nmon -f -t -s 5 -c 12

3、格式转换sort ansible_200827_1913.nmon > ansible_200827_1913.csv

4、下载csv到windows

5、使用nmon analyser工具加载csv进行分析,输出结果

analyser: https://gitee.com/phygerr/picture/blob/master/files/nmon_analyser_v5_0_2.zip nmon: https://gitee.com/phygerr/picture/blob/master/files/nmon16m_helpsystems.tar.gz

request的简单封装

import requests

class Got(object):

def __init__(self,ip,protocol='https',port='80'):
self.protocol=protocol
self.port=port
self.ip=ip

def __url(self,uri):
if not uri:
print('uri is not available!')
raise TypeError
else:
return '{}://{}:{}{}'.format(self.protocol,self.ip,self.port,uri)


def get(self,uri,parameter=None,description=None):
url = self.__url(uri=uri)
print(url)
try:
r = requests.get(url,params=parameter,verify=False,timeout=10)
if r.status_code == 20:
return r.headers
elif description is None:
print('current get request failed,CODE:{},INFO:{}'.format(r.status_code,r.content))
return False
else:
print('<{}> failed,CODE:{},INFO:{}'.format(description,r.status_code,r.content))
return False
except Exception as e:
print(e)
return False



if __name__ == "__main__":
got = Got('10.135.3.22',protocol='http',port='8889')
res = got.get(uri='/',description='watch index')
print(res)

ret = got.get(uri='/test/',description='watch test')
print(res)

git教程

git教程:https://www.bootcss.com/p/git-guide/

wordpress搭建

docker run --name wp_mysq \
-p 3307:3306 \
-v /data/docker/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD='123456' \
-d mysql

docker run --name wordpress \
--link wp_mysq:mysql \
-v /data/docker/html:/var/www/html \
-p 8889:80 \
-d wordpress