刚刚查了下代码,应该是用下面这个:
JMeterUtils.setProperty("thread", "10");
__P() 函数获取的是系统参数,所以应该用下面的方法:
System.setProperty("thread", "10");
顺便提供一个检测命令
unzip -q <app_name>.ipa
codesign -d --extract-certificates Payload/*.app
openssl x509 -inform DER -in codesign0 -noout -nameopt -oneline -dates # 获取生效-失效时间,然后就可以验证了
都有责任吧,证书应该算是一个测试点吧,测试虽然提交了"BUG",但是并没有去验证。建议把打包证书放到持续集成流程中,避免忘记。
SQL 中字符串本来就需要加引号的。
遇到这种问题,在报错的地方打一个断点,看一下对应的库的路径是不是系统自带的库,一般来说都是因为文件重名了。
这种元素目前好像没有什么办法处理,你可以跟你们前端商量下,能否把这个显示的时间做成可配置的。一般来说是可行的。
你这种参数明显不符合 http 规范,通常 json 应该直接放在 Body 里面,你现在这种方式是提交表单 (x-www-form-urlencoded),然后里面又混合了 json 字符串,httprunner 目前不支持这种写法,只能自己去拼接。
首先注意下排版
POST 的话不要自己去拼接 Json,直接用 json 字段,如下
name: POST接口请求
base_url: http://xxx.com
variables:
name: '张三'
score: 90
request:
url: /class/add
method: POST
json:
name: $name
score: $score
import itertools
if __name__ == '__main__':
str1 = '第一个变量{},第二个变量{},第三个变量{}'
var1 = ['1', '2', '3']
var2 = ['4', '5', '6', '7']
var3 = ['8', '9', '10']
for item in itertools.product(var1, var2, var3):
print(str1.format(item[0], item[1], item[2]))
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.logging.LogEntries;
import org.openqa.selenium.logging.LogEntry;
import org.openqa.selenium.logging.LogType;
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
public class ChromeConsoleLogging {
private WebDriver driver;
@BeforeMethod
public void setUp() {
System.setProperty("webdriver.chrome.driver", "c:\\path\\to\\chromedriver.exe");
DesiredCapabilities caps = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.BROWSER, Level.ALL);
caps.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
driver = new ChromeDriver(caps);
}
@AfterMethod
public void tearDown() {
driver.quit();
}
public void analyzeLog() {
LogEntries logEntries = driver.manage().logs().get(LogType.BROWSER);
for (LogEntry entry : logEntries) {
System.out.println(new Date(entry.getTimestamp()) + " " + entry.getLevel() + " " + entry.getMessage());
//do something useful with the data
}
}
@Test
public void testMethod() {
driver.get("http://mypage.com");
//do something on page
analyzeLog();
}
}
先了解下 OAuth 吧。
这个 code 必须要用户点了允许获取个人信息的时候,才会生成,然后你的服务端就拿这个 code 去调微信的 API 获取用户的信息。所以你是没办法直接生成的。
你不应该用 AfterTest,应该用 ITestNGListener ,实现 onFinish 方法。
同 4 楼,docker 目前只支持 linux 内核,windows 版的 docker 不过是在 windows 上装了个虚拟机,所以没办法支持 windows 上的各种 exe 安装包;
然后 docker 目前也是支持 linux 下的 GUI 应用的,具体可以 google 下 Xvfb + VNC;
如果你觉得重复安装软件比较麻烦,可以用脚本实现自动安装配置,也可以制作安装好的系统镜像,直接安装到其他电脑;
至于你说的 “代码敲出来 可以在其他电脑上看到”,现在很多 IDE 都支持 Live Share 功能,你也可以搜索下。
这个 token 生成后可以一直使用啊,不会过期,你直接存在 jenkins 里面。
子类需要调用 super().init()
PO 只是解耦和提高控件复用性吧,至于复杂度这个和业务、你的测试用例都有关系。
pycharm 毕竟是专业的
把校验的代码去掉就行了啊
检查下 jenkins 用户有没有 jenkin home 的读写权限
这不是 bug,你应该先了解下 markdown 的语法。
原生 markdown 是不支持回车换行的
你用 json 序列化出来肯定是带引号的,不带引号只能自己拼接字符串
这个可以记录日志,可以从日志里面找
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
caps = DesiredCapabilities.CHROME
caps['loggingPrefs'] = {'performance': 'ALL'}
driver = webdriver.Chrome(desired_capabilities=caps)
driver.get("https://www.baidu.com")
for entry in driver.get_log('performance'):
print(entry)
感觉你对 docker 理解有误,docker 最大的作用是资源隔离,管理;你开 10 个 docker,和你开 10 个编译进程是一样的效果,在这里 docker 可以说没有任何作用。
一般来说都是用多个 agent,每个 agent 上同时编译的项目都是有限制的(2-4 个,看配置 )。
对代码编译这种耗 CPU,又耗内存的,在单台物理机上并行并没有太大作用,并行处理只对 IO 密集型有很好的效果。
你的这种需求唯一的办法就是用多台物理机 Agent,一起编译。