Tengo varias funciones que me gustaría replicar en diferentes casos de uso en varias solicitudes y carpetas dentro de la misma colección (lo estoy usando principalmente como plantilla, por lo que extraerá variables externamente)
Hay muchas sugerencias diferentes en la documentación de Postman, pero ¿cuál es la mejor manera de reutilizar el código para tal caso de uso?
Lo que he estado haciendo últimamente es agregar funciones a mi script de solicitud previa de nivel de colección como este
collectionUtils = { clearEnvData: function (pm) { some useful code }, // called after every request to ensure server coverage durring smoke testing. cycleCurrentServer: function (serverCount, pm) { some useful code } }Luego, donde sea que quiera usar estos métodos, hago algo como esto
collectionUtils.cycleCurrentServer(index, pm);Creo que, en general, la mejor manera es externalizar el código en una biblioteca. Luego hará cambios en la biblioteca y esos cambios se reflejarán en todas partes. Ahora hay varias formas de implementar este método , me iré con las dos que tienen sentido para su caso de uso:
Cargue su biblioteca desde un sitio remoto
Si está utilizando algún tipo de flujo de trabajo de desarrollo que publica sus cambios en sentido ascendente y tiene su biblioteca publicada en algún lugar, puede cargarla en tiempo de ejecución:
pm.sendRequest("https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/dayjs.min.js", (err, res) => { //convert the response to text and save it as an environment variable pm.collectionVariables.set("dayjs_library", res.text()); // eval will evaluate the JavaScript code and initialize the min.js eval(pm.collectionVariables.get("dayjs_library")); // you can call methods in the cdn file using this keyword let today = new Date(); console.log("today=", today); console.log(this.dayjs(today).format()) })Almacene su código en una variable de colección y cárguelo de esa manera
Una forma menos bonita de hacerlo pero más conveniente para mucha gente es colocar toda la biblioteca en una variable de colección como esta:
Luego puedes cargarlo cuando lo necesites:
const dayjs_code = pm.collectionVariables.get('dayjs_code'); // Invoke an anonymous function to get access to the dayjs library methods (new Function(dayjs_code))(); let today = new Date(); console.log(dayjs(today).format())En ambos casos, cuando actualiza su biblioteca, debe volver a publicarla o copiar y pegar nuevamente en la variable de colección. Sin embargo, eso seguramente supera a copiar y pegar un fragmento de código en 20 lugares extraños y descubrir qué está actualizado, qué no y luchar contra los errores mientras lo hace.