가라테에 약간 까다로운 요구 사항이 있습니다. 구현에 따라 선택된 karate.config에 baseURL 집합이 있습니다. 다음은 그 일부입니다.
if (env == 'qa') {
config.apiKey = apiKey;
config.tsp_api = 'https://api.qa.tceu.net';
config.svt_dcm = 'https://svt.qa.tceu.net';
config.acn_dcm = 'https://acn.qa.tceu.net';
config.sos_dcm = 'https://sos.qa.tceu.net';
config.cust_dcm = 'https://cust.qa.tceu.net';
여기서 tsp, svt, acn, sos, cust는 몇 가지 작업입니다.
작업을 매개 변수로 전달하는 기능 파일이 있습니다.
# Vehicle Initiates the action
When def Perform_Report_Notification = call read('./../common/performActionNotification.feature') { action: '#(action)' }
호출 된 performActionNotification.feature에서 전달 된 작업을 기반으로 karate.config 파일에서 URL을 선택해야합니다. 예를 들어 작업이 sos 인 경우 URL은 sos_dcm이어야합니다. 작업이 svt이면 URL은 svt_dcm이어야합니다.
다음은 performActionNotification.feature의 스 니펫과 제가 현재 sos를 위해하고있는 일입니다.
Given url sos_dcm
And path '/AU/v1.0/TSP/'+ action
And request RequestPayload
When method post
Then status 200
다음과 유사한 if와 같은 것을 구현하고 싶습니다.
if (action == 'sos')
then myurl == 'sos_dcm'
else if (action == 'acn')
then myurl == 'acn_dcm'
else if (action == 'svt')
then myurl == 'svt_dcm'
Given url myurl
And...
And...
...
나는 일종의 해킹을 시도했지만 작동하지만 깨끗한 방법은 아닙니다. karate.config에서 URL을 읽는 대신 다음과 같이 하드 코딩합니다.
Given url 'https://'+act+'.qa.tceu.net'
내가 시도한 또 하나는
* def myurl = action +'_dcm' #so if action is acn then the variable myurl would be acn_dcm
Given url myurl
...
....
그러나 이것은 karate.config에서 정의 된 URL을 선택하는 대신 URL을 'acn_dcm'로 하드 코딩합니다.
누군가 이것을 구현하는 가장 좋은 방법을 친절하게 제안 할 수 있습니까?
조건부 논리에 자바 스크립트를 사용하는 것이 좋습니다.
따라서 자바 스크립트 함수는 동작 매개 변수를 취하고 if 및 else 문은 필요한 URL의 변수를 반환합니다.
요청을 호출하기 전에 javascript 기능을 수행하십시오. js가 반환하는 변수를 사용하여 논리를 결정하십시오.
js 파일을 여러 기능 파일에서 액세스 할 수있는 공통 함수로 만듭니다.
function determineUrl(action) {
var url = "${urDefaultUrl}";
if (action == "sos") url == "${full url}";
else if (action == "acn") url == "${full url}";
return url;
}
그런 다음 기능 파일에서
* def urlDecider = 'classpath to your js function'
* myUrl = urlDecider(action)
* url myUrl
* Given path ....
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다