mac을 쓰다보면, .DS_Store파일이 생기게 된다.
Mac의 메타정보를 저장하는 파일이라고 하는데 없어도 상관없고,
일일이 지우는 것도 귀찮으니, 아예 생성하지 않도록 설정할 수 있다.
터미널에서 아래와 같이 입력한 뒤, 재시작한다.
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
mac을 쓰다보면, .DS_Store파일이 생기게 된다.
Mac의 메타정보를 저장하는 파일이라고 하는데 없어도 상관없고,
일일이 지우는 것도 귀찮으니, 아예 생성하지 않도록 설정할 수 있다.
터미널에서 아래와 같이 입력한 뒤, 재시작한다.
defaults write com.apple.desktopservices DSDontWriteNetworkStores true
1 2 3 4 | static void waitForLoad(WebDriver driver) { new WebDriverWait(driver, 30).until((ExpectedCondition<Boolean>) wd -> ((JavascriptExecutor) wd).executeScript("return document.readyState").equals("complete")); } | cs |
JUnit에서 Fail된 Case를 재수행하기 (0) | 2018.02.21 |
---|---|
테스트 진행전 windows에서 chrome webdriver kill 하기 (0) | 2018.02.05 |
selenide에서 mobile emulation 방법 (0) | 2018.01.30 |
junit 4.x 에서 csv파일로 data driven test 구현하기 (0) | 2018.01.30 |
Rest-Assured를 활용한 API 테스트 자동화 (0) | 2018.01.28 |
명령어 |
설명 |
a\ |
현재 행에 하나 이상의 새로운 행 추가 |
c\ |
현재 행에 새로운 내용으로 교체 |
d |
행을 삭제 |
p |
행을 출력 |
n |
다음 입력행을 첫번째 명령어가 아닌 다음 명령어에서 처리 |
q |
sed 종료 |
r |
파일로부터 행을 읽어온다 |
s |
문자열을 치환 |
성능 테스트시 서버 모니터링 방법 정리 (1) | 2018.01.25 |
---|
Junit을 사용하여 테스트를 진행하고, 결과 중 fail된 case만 따로 다시 수행시켜보는 방법 보다는
fail된 case를 바로 더 돌리도록 해서 그 이후에 결과를 확인하는 것이 더 좋을 때가 있다.
이럴 때는 TestRule을 이용해서 JUnit Retry를 구현하는 방법을 사용한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; public class JUnitRetry implements TestRule { private int retryCount; public JUnitRetry(int retryCount) { this.retryCount = retryCount; } @Override public Statement apply(Statement base, Description description) { return statement(base, description); } private Statement statement(final Statement base, final Description description) { return new Statement() { @Override public void evaluate() throws Throwable { Throwable caughtThrowable = null; // implement retry logic here for (int i = 0; i < retryCount; i++) { try { base.evaluate(); return; } catch (Throwable t) { caughtThrowable = t; System.err.println(description.getDisplayName() + ": run " + (i+1) + " failed"); } } System.err.println(description.getDisplayName() + ": giving up after " + retryCount + " failures"); throw caughtThrowable; } }; } } | cs |
위와 같이 JUnitRetry 클래스를 만들어 놓고, 테스트코드에서는 Rule을 사용하여 Retry 를 몇번 할지 횟수만 지정하고 사용하면 된다.
1 2 | @Rule public JUnitRetry retry = new JUnitRetry(2); | cs |
selenium javascript 로딩 완료될때 까지 wait 하기 (0) | 2018.07.19 |
---|---|
테스트 진행전 windows에서 chrome webdriver kill 하기 (0) | 2018.02.05 |
selenide에서 mobile emulation 방법 (0) | 2018.01.30 |
junit 4.x 에서 csv파일로 data driven test 구현하기 (0) | 2018.01.30 |
Rest-Assured를 활용한 API 테스트 자동화 (0) | 2018.01.28 |
판교에서 출퇴생활 벗어난지 1년이 넘었는데..
회의 때문에 다시 판교로 가야 된다 ㅠ.ㅠ
종로 방향으로 빠르게 퇴근하기 위해서는 9007번 버스 / 혹은 지하철을 이용해야 하는데,
9003번 버스도 있다.
매번 까먹어서 여기에다가 적어놓고 생각날 때마다 봐야겠다.
SK플래닛 건물 앞에서 승차!
Windows에서 Selenium으로 UI자동화 진행하다보면, chromedriver.exe가 남아있어서 브라우저가 기동이 안될 경우가 있다.
driver.quit()을 꼼꼼히 호출해도 남아있는 경우가 있는데,
jenkins 에서 pre-build 단계나, test진행 전 단계에 taskkill을 이용하는 것이 좋다.
taskkill /f /fi "pid gt 0" /im chromedriver.exe
Runtime.getRuntime().exec("taskkill /f /fi /im chromedriver.exe");
selenium javascript 로딩 완료될때 까지 wait 하기 (0) | 2018.07.19 |
---|---|
JUnit에서 Fail된 Case를 재수행하기 (0) | 2018.02.21 |
selenide에서 mobile emulation 방법 (0) | 2018.01.30 |
junit 4.x 에서 csv파일로 data driven test 구현하기 (0) | 2018.01.30 |
Rest-Assured를 활용한 API 테스트 자동화 (0) | 2018.01.28 |
vi /etc/httpd/conf/mod_jk.conf
<IfModule mod_jk.c> JkWorkersFile "/etc/httpd/conf/workers.properties" JkLogFile "/etc/httpd/logs/mod_jk.log" JkLogLevel info JkAutoAlias "/home/paralles/Dev/tomcat/webapps" JkMount /*.jsp worker1 JkUnMount /*.html worker1 JkLogStampFormat "[%a %b %d %H:%M:%S %Y]" </IfModule>
vi /etc/httpd/conf/workers.properties
worker.list = worker1 worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009
selenide는 driver.close()나 wait() 등을 알아서 진행해주기 때문에 좀 더 스마트한 UI자동화 도구이다.
selenium은 사실 webdriver를 통한 브라우저 제어 도구에 좀 더 가깝다.
selenide에서 chrome webdriver를 세팅할때,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public class SelenideMWChromeTest { @Before public void setUp() { Map<String, String> mobileEmulation = new HashMap<>(); mobileEmulation.put("deviceName", "Nexus 5"); ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.setExperimentalOption("mobileEmulation", mobileEmulation); WebDriver driver = new ChromeDriver(chromeOptions); WebDriverRunner.setWebDriver(driver); Configuration.browser = WebDriverRunner.class.getName(); } @After public void tearDown() throws Exception{ close(); } @Test public void testStep() throws Exception{ ... 중략 ... | cs |
JUnit에서 Fail된 Case를 재수행하기 (0) | 2018.02.21 |
---|---|
테스트 진행전 windows에서 chrome webdriver kill 하기 (0) | 2018.02.05 |
junit 4.x 에서 csv파일로 data driven test 구현하기 (0) | 2018.01.30 |
Rest-Assured를 활용한 API 테스트 자동화 (0) | 2018.01.28 |
SoapUI를 이용한 API 테스트 방법 정리 (0) | 2018.01.28 |
junit 4.x에서 csv 파일을 읽어서 data driven testing을 구현하는 방법.
junit 5에는 @CsvFileSource 라는게 이미 있지만, junit 4.x 에는 없어서 구현을 해야 한다.
근데, 구글링 해보니, JUnitParams라는 아주 편리한 라이브러리가 있네.
여긴 Sample소스 : https://github.com/Pragmatists/JUnitParams/blob/master/src/test/java/junitparams/usage/SamplesOfUsageTest.java
구현 방법도 쉽다.
우선 maven pom.xml에 dependancy 추가하고
<dependency> <groupId>pl.pragmatists</groupId> <artifactId>JUnitParams</artifactId> <version>1.1.1</version> <scope>test</scope> </dependency> | cs |
테스트 코드에는 아래와 같이 구현하면 끝.
간단하고 편하네.
1 2 3 4 5 6 7 8 9 10 | import junitparams.* @RunWith(JUnitParamsRunner.class) public class SamplesOfUsageTest { @Test @FileParameters("classpath:test.csv") public void loadParamsFromClasspath(int age, String name) { .. 테스트 코드 작성 .. } | cs |
csv 파일 말고, 다른 방법으로 하는 링크된 샘플코드에 많이 나와 있으니, 생략한다.
테스트 진행전 windows에서 chrome webdriver kill 하기 (0) | 2018.02.05 |
---|---|
selenide에서 mobile emulation 방법 (0) | 2018.01.30 |
Rest-Assured를 활용한 API 테스트 자동화 (0) | 2018.01.28 |
SoapUI를 이용한 API 테스트 방법 정리 (0) | 2018.01.28 |
API 테스트 방법 (0) | 2018.01.27 |
junit을 활용한 테스트 자동화에 익숙하다보니, api테스트 자동화 한다고 하면 request, response 동작을 위한 util 및 json / xml parser 등을 모두 구현해서 사용했었는데,
그동안 왜 그랬나 싶을 정도로,, Rest-Assured는 잘 만들어진 api 테스트 자동화 도구이다.
환경 구성이나, 손 쉬운 사용법은 위 링크의 User Guide 문서를 참고하면 사용할 수 있다.
그래도 자동화 하면, 쉬운 반복 수행 및 결과 리포팅이 중요하니, 아래와 같이 구성하자.
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-all</artifactId> <version>1.3</version> </dependency> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.6.2</version> </dependency> <dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>io.rest-assured</groupId> <artifactId>json-path</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>io.rest-assured</groupId> <artifactId>xml-path</artifactId> <version>3.0.2</version> </dependency> <dependency> <groupId>com.aventstack</groupId> <artifactId>extentreports</artifactId> <version>3.0.1</version> </dependency> </dependencies> | cs |
1 2 3 4 5 6 7 8 | given() .header("Cookie", "Cookie-Value") .contentType("application/x-www-form-urlencoded") .body("Body Message") .when() .post("http://www.naver.com/openapi/apitest?method=abcde") .then() .statusCode(200); | cs |
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
selenide에서 mobile emulation 방법 (0) | 2018.01.30 |
---|---|
junit 4.x 에서 csv파일로 data driven test 구현하기 (0) | 2018.01.30 |
SoapUI를 이용한 API 테스트 방법 정리 (0) | 2018.01.28 |
API 테스트 방법 (0) | 2018.01.27 |
자동화에 extent report 적용하기 (0) | 2018.01.22 |