java測試腳本怎麼寫
1. 怎麼對手機app進行測試腳本的錄制,進而使用Jmeter進行性能測試
1、新建一個ThreadGroup
分組裡面是介面的請求
後續就可以針對性能測試場景設置參數化、延時、集合點,事務。
JMeter是Apache組織開發的基於java的壓力測試工具。用於對軟體做壓力測試,它最初被設計用於Web應用測試,但後來擴展到其他測試領域。它可以用於測試靜態和動態資源,例如靜態文件、Java小服務程序、CGI腳本、Java對象、資料庫、FTP伺服器,等等。
2. 如何用python寫一個腳本,來跑java代碼上的cucumber集成測試
1.直接執行Python腳本代碼
引用 org.python包
1 PythonInterpreter interpreter = new PythonInterpreter();
2 interpreter.exec("days=('mod','Tue','Wed','Thu','Fri','Sat','Sun'); "); ///執行python腳本
2. 執行python .py文件
1 PythonInterpreter interpreter = new PythonInterpreter();
2 InputStream filepy = new FileInputStream("D:\\demo.py");
3 interpreter.execfile(filepy); ///執行python py文件
4 filepy.close();
3. 使用Runtime.getRuntime()執行腳本文件
這種方式和.net下面調用cmd執行命令的方式類似。如果執行的python腳本有引用第三方包的,建議使用此種方式。使用上面兩種方式會報錯java ImportError: No mole named arcpy。
1 Process proc = Runtime.getRuntime().exec("python D:\\demo.py");
2 proc.waitFor();
3. 如何用java寫腳本,實現windows客戶端自動化測試
你的monkeyrunner腳本要用android自己的monkeyrunner
解釋器
(基於jython)
來載入,eclipse默認的是標准python解釋器,當然會報錯。最簡單的方法是..忽略它...當然你也可以自己配置eclipse的python解釋器選擇。
4. 如何在Java中使用Lua腳本語言
LuaJava實際上就是按照Lua官方文檔, 把Lua的C介面通過JNI包裝成Java的庫. 下載, 裡面是一個.dll, 一個.jar. 把.dll放到java.library.path下, 再把.lib放到classpath中, helloworld運行OK.
但是, 測試的時候, 很快發現了第一個問題: 在調用LuaJava中提供的LuaState.pushInteger方法的時候, 出現了錯誤 :Unsatisfied Link Error. 其他的LuaState.pushNumber方法倒是沒有問題. 用Depends工具看了下, 這個.dll居然沒有導出pushInteger這個函數。
(1).下載LuaJava的源代碼, 查看了下Luajava.c 和 Luajava.h, 發現果然裡面有點問題, 在.h裡面定義了JNI中對應Java函數的C函數
JNIEXPORT void JNICALL Java_org_keplerproject_luajava_LuaState__1pushInteger
但是.c中沒有實現這個函數. 無語, 看來大馬虎哪都有啊. 幸虧有源代碼, 照貓畫虎在Luajava.c中加上這個函數的實現,
(2).然後編譯. 編譯也出現了問題了, 官方文檔中說可以用VC++來Build, 但是沒有說官方用的是什麼版本. 我用VC2005就不行. 好在Luajava比較小, 就一個.h 一個 .c , 在VC中新建一個.dll項目, 把文件加進去, 修改一下build參數 (Include 需要加上lua的頭文件, lib中需要加上lua的.lib文件, 另外要選上Compile as C Code (/TC)) Build, 通過了.
這時再在Java中調用pushInteger方法就沒有問題了.
在測試中, 發現Luajava提供的文檔中, 對於Lua腳本怎麼調用Java對象/方法很詳細, 但是在Java中怎麼調用Lua函數/取得返回值 就沒有. 參考了http://www.lua.org/manual/5.1/manual.html#lua_CFunction的Lua C文檔, 實現了傳遞對象到Lua中並取得返回值的代碼:
Test1: 測試傳遞簡單類型, 並取得返回值:
Lua 腳本(test.lua):
function test(a,b)
return a+b
end
Java代碼:
static {
//載入Lua5.1.dll, 因為LuaJava最後還是要調用Lua的東西
System.loadLibrary("lua5.1");
}
public static void main(String[] argu) throws LuaException {
LuaState L = LuaStateFactory.newLuaState();
L.openLibs();
//讀入Lua腳本
int error = L.LdoFile("test.lua");
if (error != 0) {
System.out.println("Read/Parse lua file error. Exit.");
return;
}
//找到函數test
L.getField(LuaState.LUA_GLOBALSINDEX, "test");
//參數1壓棧
L.pushInteger(1);
//參數2壓棧
L.pushInteger(2);
//調用!! 一共兩個參數, 1個返回值
L.call(2, 1);
//保存返回值, 到a中
L.setField(LuaState.LUA_GLOBALSINDEX, "a");
//讀入a
LuaObject l = L.getLuaObject("a");
//列印結果.
System.out.println("Result is " + l.getString());
L.close();
}
測試2: 傳遞Java對象
class Value {
public int i;
public void inc() {
i++;
}
public int get() {
return i;
}
public String toString() {
return "Value is " + i;
}
}
Lua腳本: (該腳本中調用兩次對象的inc方法, 並調用get方法輸出結果)
function test1(v)
v:inc();
v:inc();
print("In lua: " .. v:get());
return v
end
Java 代碼: (前面都一樣, 略)
//找到函數est1
L.getField(LuaState.LUA_GLOBALSINDEX, "test1");
//生成新的對象供測試
Value v = new Value();
//對象壓棧
L.pushObjectValue(v);
//調用函數test1, 此時1個參數, 1個返回值
L.call(1, 1);
//結果放在b中.
L.setField(LuaState.LUA_GLOBALSINDEX, "b");
LuaObject l = L.getLuaObject("b");
System.out.println("Result is " + l.getObject());
總結:運行結果:
Result is Value is 2
In lua: 2
和預期的一致.