2012-02-07 34 views
14

Có cách nào để truy cập đường dẫn vật lý tuyệt đối của tập lệnh hiện tại thông qua biến/thuộc tính không? Dường như không có bất cứ điều gì được liệt kê thông qua một Debug Sampler.Truy cập vào đường dẫn tập lệnh JMeter

Thật đáng ngạc nhiên khi các hành động như tải tệp CSV và JMX Bao gồm sử dụng thư mục làm việc hiện tại làm đường dẫn tương đối của nó.

Trả lời

10
  • Include Controller
    Theo tài liệu tham khảo thành phần của:

    yếu tố này không hỗ trợ các biến/hàm trong tên tập tin lĩnh vực.
    Tuy nhiên, nếu thuộc tính includecontroller.prefix là được xác định, nội dung được sử dụng để đặt trước tên đường dẫn. Nếu không thể tìm thấy tệp tại vị trí được cung cấp bởi tiền tố + tên tệp, thì trình điều khiển tìm cách mở tệp tên liên quan đến thư mục JM2 khởi động (phiên bản của JMeter sau 2.3.4).

    Bạn có thể chuyển JMeter thuộc tính java có tên includecontroller.prefix có thể được sử dụng để thêm một thư mục vào tệp JMX mà bạn đang sử dụng bao gồm.

    1) Trong trường hợp của giao diện điều khiển ra mắt sử dụng:

    -Jincludecontroller.prefix=/full/path/to/jmx/scripts/dir/

    2) trong trường hợp của GUI - thêm như vậy để sh/.cmd/file .bat hoặc viết một tập tin wrapper ;
    3) trong trường hợp Jmeter Ant Task sử dụng - thiết lập như là tài sản riêng:

    <jmeter 
    jmeterhome="${jmeter.home}" 
    testplan="..." 
    resultlog="..."> 
        <property name="jmeter.save.saveservice.assertion_results" value="all"/> 
        <property name="jmeter.save.saveservice.output_format" value="xml"/> 
        <property name="includecontroller.prefix" value="..."/> 
    </jmeter> 
    
  • CSV Data Set Config
    Theo thành phần của tài liệu tham khảo:

    tên tập tin tương đối được giải quyết liên quan đến con đường với kế hoạch kiểm tra hoạt động .
    Tên tệp tuyệt đối cũng được hỗ trợ, nhưng lưu ý rằng chúng không hoạt động ở chế độ từ xa, trừ khi máy chủ từ xa có cùng cấu trúc thư mục. Nếu cùng một tệp vật lý là được tham chiếu theo hai cách khác nhau - ví dụ: csvdata.txt và ./csvdata.txt - sau đó chúng được xử lý dưới dạng các tệp khác nhau. Nếu hệ điều hành không phân biệt giữa trên và chữ thường, csvData.TXT cũng sẽ được mở riêng.


    Bạn có thể khai báo một biến kế hoạch kiểm tra để lấy giá trị tham số với thư mục chứa tập tin dữ liệu csv:
    ví dụ

    csv.path | ${__P(csv.path, ${__property(user.dir)}${__BeanShell(File.separator,)})}

    CSV Data Set Config 
    Filename = ${csv.path}${__P(users-list,)} 
    

    Thiết từ giao diện điều khiển:

    -Jcsv.path=/full/path/to/csv/data/dir/

    Setting cho thiết lập thử nghiệm phân phối:

    -Gcsv.path=/full/path/to/csv/data/dir/
+0

Cảm ơn câu trả lời chi tiết của bạn Alies. Làm thế nào để làm việc này khi chạy trong "gỡ lỗi" thông qua GUI? –

+0

Cảm ơn bạn đã tham khảo tài liệu. Tôi đã nhầm lẫn khi kết xuất nhật ký ngụ ý rằng đường dẫn nhà JMeter đã được sử dụng; tuy nhiên, nếu đường dẫn tương đối JMX chính xác thì nó sẽ hoạt động. –

3

vấn đề cụ thể của tôi là thân nhân của tôi bao gồm điều khiển con đường bao gồm một dấu gạch chéo đó đã phá vỡ trên Linux và OSX.

Giải pháp là sử dụng dấu gạch chéo chuyển tiếp trong các đường dẫn tương đối, hoạt động trên tất cả các nền tảng.

+1

Cảm ơn vì điều đó. Bên trong các kịch bản lệnh jmeter, bạn cũng có thể sử dụng $ {__ BeanShell (File.separator,)} để thiết lập tất cả các đường dẫn - điều này cũng sẽ làm cho chúng độc lập với nền tảng. –

+0

@AliesBelik - Tôi sẽ ghi nhớ điều đó, mặc dù trong trường hợp này, Bộ điều khiển Bao gồm không hỗ trợ các biến (theo câu trả lời của bạn). –

+0

Lệnh chính xác này có ý nghĩa gì? $ {__ BeanShell (Name_Of_BeanShell_Script)}. Tôi đã có một kịch bản beanshell bên trong jMeterProject của tôi và tôi muốn sử dụng chỉ một trong số đó trước khi gửi yêu cầu. Tôi có nên sử dụng bên trong lệnh BeanShell PreProcessor: $ {__ BeanShell (Name_of_my_script)} ?? –

8

Bằng cách nói "đường dẫn vật lý tuyệt đối của tập lệnh hiện tại", tôi đoán OP đang đề cập đến vị trí mà tệp thử nghiệm (tệp jmx) được tải từ đó. Tôi cần chính xác điều này để tạo tệp CSV từ kịch bản lệnh BeanShell khi bắt đầu chạy, sau đó được sử dụng trong Cấu hình tập dữ liệu CSV để đọc lại, vì vậy tôi muốn tập lệnh hoạt động giống như cách hoạt động sau này khi không có đường dẫn được chỉ định. Tôi đã đi qua nguồn JMeter và tìm thấy giải pháp làm việc này:

import org.apache.jmeter.services.FileServer; 
log.info(FileServer.getFileServer().getBaseDir()); 

Tôi đã kiểm tra điều này và thấy đường dẫn chính xác trong jmeter.log.

18

Tôi đã sử dụng câu trả lời do haridsv cung cấp. Nó hoạt động rất tốt, ngoại trừ việc tôi cần đặt thư mục vào tệp JMX trong một biến. Tôi đã thực hiện một "User Defined biến" thành phần và sử dụng BeanShell trong lĩnh vực "Giá trị" của biến như thế này:

${__BeanShell(import org.apache.jmeter.services.FileServer; FileServer.getFileServer().getBaseDir();)}${__BeanShell(File.separator,)} 

Phần BeanShell đầu tiên gọi là lớp Java mà được thư mục trong câu hỏi. Thứ hai nối thêm một dấu phân tách tệp vào đường dẫn, dĩ nhiên là tùy chọn.

+1

Điều này làm việc trong gui, không gui và với tất cả các thành phần mà không rối tung xung quanh với cấu hình hoặc tham số – KCD

+0

Chỉ cần cho bản ghi: Một hiệu ứng của giải pháp này, (ít nhất là 3.2 mà tôi đã thử nghiệm), là vì một số lý do không có cảnh báo ghi đè nhiều hơn cho các tệp báo cáo (Phụ lục được tự động thực hiện) –

Các vấn đề liên quan